Further clean up of control flow graph generation

This change adds the invariant that the Entry and Exit blocks will always be the first and last blocks respectively.
Some work on computing reaching definitions (commented out)
Implement reaching definitions