Bit-cast temp registers - issues #8, #20 and #21

For sm4 onwards use integer temps and reinterpret bits to/from float
when required. This has been done to handle the fact that sm4+ temp
registers are typeless, prior to that they were floating point.
There are some problems with unsigned integers, atomics and UAVs which
this change introduces but on the whole things appear to be better.
There may be cases where this bit-casting can be safely avoided but that
is left as a future exercise.