Changed procedures to use explicit load/store of args/ret
Added live range renaming
Added variable interference graph
Added gitignore
Added addEdge() and removeSymbol() to InterferenceGraph
First crack at register allocation
Added procedure call rules to register allocator
Added preferred registers to register allocator
Handle addImm in ConstantProp
Print "addi x, y, -n" as "sub x, y, n"
Removed debug printouts
Save/restore registers in function prologue/epilogue
Added IR entries for prologue/epilogue
Added basic spill code to register allocator
Only save LR in prologue/epilogue when necessary
Fixed entry printout code
Cleaned up RegisterAllocator code
Changed VM::Instruction to std::ostream printing
Changed IR::Entry to std::ostream printing
Converted more prints to iostream