Restructure the target lowering entry point a bit.

The chained if-then-else tests on the instruction kind are replaced
with a more efficient switch statement.

Before returning the instruction expansion, the expansion is passed to
the postLower() method, which gives the Target the opportunity to do
some eager register allocation:

- The high-quality code generator does nothing in postLower(), and
  leaves all the work to the global register allocator.

- The super-fast code generator allocates a separate register for each
  IceVariable that has infinite weight (i.e., the temporaries
  generated as part of the expansion).

- The medium-weight code generator uses a register manager to track
  operand availability in registers across the basic block.  This one
  will also need some call at the beginning of the basic block to
  reset the register manager.
Add a "fast" x86-32 subtarget.  Refs #27.

llvm2ice -target x8632fast ...

This turns off all non-essential optimizations.  The resulting code
quality is horrible, but it gets generated quickly!  (Though there is
probably more translation-time tuning that could be done.)

To facilitate this, the driving of the passes is moved from IceCfg
into the IceTargetLowering level.

A lowering bug is fixed where Arithmetic instruction lowering didn't
legalize a memory operand (which resulted from address mode
optimization) to force physical registers in the addressing mode.
Fix compile error.