orderBlocks

Re-order the blocks to minimize the number of pointless jumps. When we start generating JVM code, this should also try to make one of the paths from conditional branches come after the branch, otherwise an extra jump instruction has to be generated.

The initial block should always come first.

For now, use the simple heuristic of only placing a block if all its predecessors have been placed (or if there are only cycles unplaced, pick one arbitrarily).