ALU jit optimizations

This just optimizes some of the most common ops in arithmetic.

Specifically:
 * It ensures noops are noops (write to $0.)
 * Adds a similar immediate interface to the regcache as arm has.  I did this so I could easily make $0 an immediate but also storable for compatibility.
 * Optimizes some cases where immediates are used with arithmetic (e.g. lui'd values, etc.) - especially or/addu (example: lui a0, 5; or a1, a0, 6; or a2, a0, 7.)
 * Avoids flushing if possible in 3-reg math.  Should mean less memory access.

-[Unknown]