Fix cdq instruction emission (add tab+newline).
Add support and tests for Unreachable and Bitcast instructions.

Bitcast caused a bit of a problem because the IR is geared toward
keeping variables in physical registers, whereas converting types in
x86 requires going through memory.  To help with this, variables can
be assigned a weight of Zero to prevent register allocation.  And to
minimized excess copying, these variables can be marked to explicitly
share a stack slot with another variable, in case that other variable
ends up not being allocated a register.

More complications arise with 64-bit values.  By design, i64 variables
are lowered/split into independent i32 components, and these i32
components can be independently register-allocated, or even dead-code
eliminated.  The only time they are even guaranteed to be adjacently
stack-allocated is for i64 arguments.  On top of that, f64 variables
are never split into 32-bit components.  All this makes it extra hard
to do bitcasts on 64-bit values.  To help with this issue, we define a
new operand type that wraps an f64 stack-allocated variable and yields
either the lower or upper half as an i32 value.  Wrapping the original
variable lets liveness analysis continue to work properly.