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.
We should log an error here so that the user knows there is a problem, we should not put bad code in the MIPS output