Register allocation and bug fixes

I also fixed branching logic so that the simple_while.cpsl would work.

String writing stops me from testing some of the other tests like simple_if.cpsl, etc.
There are several different kinds of meta data that we might want to examine.  This needs to be more extensible, or not as tightly coupled with the basic blocks (so that others can be easily added)