If move has been spilled, emit store directly

Before it would emit a move into a temporary, and then a store.
Add new test case spill2 to test spilled moves
Add a method to get an instruction's use count
Don't use the inner class EdgeInfo
Add reference output for cell

I'm not 100% sure if this is correct, but at least I'll be able to see
if the output is stable.
Improvements to the register allocator

It will now make some sort of prediction on which values should and
should not be spilled.
Add new test case spill3
Use helper functions when dealing with spills
Handle some spilling specially

Fetches can be spilled for free if they are only used once, values that
are never used can be spilled as well, and don't even need to be given a
memory cell, sort of a poor man's dead code elimination, if dead code
elimination wasn't performed at any other step in the compilation.
Fix bug in control flow for emitting moves
Add new test case spill4

This tests a special case of spilling.