Fix bugs with 0x3f800000 constants in ternaries.

This was quite difficult to figure out the right path, but seems to work well now.
The constants in AND statements are now converted from hex to floating point when used as conditionals, but unchanged when passed through as bit masks for an AND.

This fixes 1000s of errors in shaders that were generated as bad code, for anything using the compiler optimiztion of an IF statement becoming an AND at asm.