Improve MIPS code generator

- use registers more efficiently
- eliminate some register copies and stack manipulations
- overall generate a bit tighter, faster and more readable asm code