MOVC and MOV now more compatible with typeless data.

For example if the data moved by MOVC was float in once case and integer
in the other, this can be managed by making the destination of the write
an integer type and an any floating point sources will need
floatBitsToInt. When a floating point operation is performed
intBitsToFloat is used to get back to a floating point type.
Use the bitcast_to_float flag in more places.
Bitwise ops no longer write float when one of the sources is float

vs5\exp
Temp0.x = intBitsToFloat(floatBitsToInt(Input1.x) & 0x7F800000);
Temp0_int.x = ivec4(Temp0).x + 0xC1000000;
becomes
Temp0_int.x = floatBitsToInt(Input1.x) & 0x7F800000;
Temp0_int.x = Temp0_int.x + 0xC1000000;