Dominators + post-dominators, subgraphs, thread ID + collect nodes, document IR
This MR adds the following:
- Implementation of dominators and post-dominators. Uses the subgraph API, so dominance can be done on arbitrary subset of IR graph (currently just done on control subset).
- Implement a generic subgraph extraction API. Can extract an arbitrary subset of the IR graph to do further analysis on. Currently, extracting the control subset of the graph is used for dominance.
- Add thread-ID and collect nodes to simplify fork + join nodes. Is necessary for future verification of phi + fork + join usage.
- Update DESIGN.md and add IR.md for a more thorough documentation of the IR.