insertPhiMoves

For every phi operation, insert a move at the end of the block that leads to it. Because of our version of edge splitting, that block always contains just a jump. The CFG will no longer be in SSA form, because the phi variables will have multiple defining instructions (the moves).

Also eliminate the phi functions.