Started looking at improving integer support.

Decode the data type of constant buffer member variables in order to
find out which ones are integer.
Uniforms are now declared using member variable type information rather
than always being floating point vec4 arrays. Only done for the non-ubo
case at the moment.
Some support for taking a compile-time-known index into the uniform +
swizzle and working out which named uniform it is.
Keep track of which data type each temp register currently is.
Inputs and outputs are now integer if they are meant to be.
Line ending changes.
Support declaring named array members of constant buffers.
Support dynamic index on named constants
Don't swizzle named scalar constant buffer members.
Merge from master.
Merge branch 'master' into Integer
Merge from master
Support boolean-typed constants using integers.

Boolean constants are now recognised. They are declared as integer in
the GLSL code - this allows implicit conversions to integer and bool
still consumes 4-bytes in GLSL.
Data-type information for dx9 constants.
Check uvec support before declaring uvec temps.
Merge branch 'master' into Integer
Remove samplers from dx9 constant buffers.

They should only appear as resources.
Fix movc with boolean constant as the condition

Seen with ps4\RaycastTerrainShootRayPS test
movc r0.xyz, cb0[0].wwww, r0.xyzx, cb1[11].xzyx
where cb0[0].wwww is a bool type constant.
Previously would generate 4 if-else statements with (illegal) .x, .y. z.
and .w swizzle on the boolean. Now it is just 1 if-else statement with
.x after upcast to vec4.
Merge branch 'master' into Integer
Added HLSL_ige versions which take integer arguments.
Unsigned integer immediate values were treated as signed.
Set int/unsigned int operand flags for ftou and ftoi instructions.

Fixes tests\vs5\exp where previously an illegal uint-output=float-temp
assignment would be used. Now that instructions appears as
uint-output=uint(float-temp).
Fix illegal swizzle when using cmp with scalar sources

Issue appeared in tests\ps3\discard
Previously:
//MOVC
if(vec4(-abs(Temp0.x)).x >= 0) {
Temp0 = ImmConst0.x.xyzw;
} else {
Temp0 = ImmConst0.y.xyzw;
}

Now:
//MOVC
if(vec4(-abs(Temp0.x)).x >= 0) {
Temp0 = vec4(ImmConst0.x).xyzw;
} else {
Temp0 = vec4(ImmConst0.y).xyzw;
}
Fixed some incorrect format strings to bformata.

Some places in the input declaration code used upper case S in %s
instead of lowercase. Caused incorrect input declarations in
tests\gs4\PipeGS.