Add a variable field to Phi instructions

This will provide the semantic information necessary to see what
identifier the phi is choosing values for.
Add method to add a Phi instruction

The phi instruction will be added to the beginning of the basic block,
but if there is already a Phi for that variable, it will just be
updated.
Create addPhiInternal

This moves the logic of adding the Phi into a protected member that can
be used by classes that extend basic block to get more information about
how the Phi was added then will be provided by the public interface.
Implement adding a Phi instruction in LoopHeader
Implement BasicBlock.getBranchTarget