Simplify the 32-bit Arithmetic lowering code.

The original code tries to be clever about abstracting the common
patterns, but it ends up being more lines of code than simply writing
out the expansion for each individual kind of instruction.  Also, the
more abstract version is much harder to tweak later, such as selecting
3-address forms of instructions when available (e.g. multiply by
immediate).