Correct callee-register save and restore
Change test now %ebx is callee-save
Tests can now use archgen to check generated code
Ensure compound ops add using the correct type

e.g. [char] += 2 does the addition using ints.

This also fixes decay-casts to not use out_cast(), as a decay doesn't
want any side effects from changing type, e.g. int[3] -> int *, we don't
want to apply a register offset before doing this.
NULL out second_blk after code gen
Rename "found" variables
Correct callee-save register spill offset
callee_save.c test now passes, also added another test
Merge branch 'feature/callee-save'