MIPS: improve code generation, bugfix

- promote left operands to right immediate operands
- improve simple assignments to auto/static vars
- use bltz, blez, bgtz, bgez
- change mul/divu (by powers of 2) to sll/srl/and
- use seb, seh for sign extension instead of sll/sra
- fix very subtle bug in e.g. void f(){int a; &a+1;/*wrong value of
&a+1*/}