Cleanup, and bug fixes.

In particular, running the A/B tests with the "fast" target showed
several problems with lowering cast instructions - invalid x86
assembly was being emitted.  Also, it was possible for the "fast"
register allocation of the call sequence to run out of registers,
e.g. when floating-point values are pushed as arguments but there are
no scratch FP registers because all are scratch registers that are
killed by the call instruction.  A couple of hacks were put in place
to deal with the call problem for the "fast" target.