Add UAV (image) binding offset and HLSL register support

This PR adds:

1. The "u" register class for RW* objects.

2. --shift-image-bindings (== --sib), analogous to --shift-texture-bindings etc.

3. Case insensitive reg classes.

4. Tests for above.
diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out
new file mode 100644
index 0000000..851ef46
--- /dev/null
+++ b/Test/baseResults/spv.rw.autoassign.frag.out
@@ -0,0 +1,70 @@
+spv.rw.autoassign.frag
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 37
+
+                              Capability Shader
+                              Capability Sampled1D
+                              Capability SampledBuffer
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 33
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 8  "r00"
+                              Name 11  "g_tTex1df1"
+                              Name 18  "r01"
+                              Name 21  "g_tBuf1du1"
+                              Name 25  "PS_OUTPUT"
+                              MemberName 25(PS_OUTPUT) 0  "Color"
+                              Name 27  "psout"
+                              Name 33  "Color"
+                              Decorate 11(g_tTex1df1) DescriptorSet 0
+                              Decorate 11(g_tTex1df1) Binding 20
+                              Decorate 21(g_tBuf1du1) DescriptorSet 0
+                              Decorate 21(g_tBuf1du1) Binding 21
+                              Decorate 33(Color) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               9:             TypeImage 6(float) 1D nonsampled format:R32f
+              10:             TypePointer UniformConstant 9
+  11(g_tTex1df1):     10(ptr) Variable UniformConstant
+              13:             TypeInt 32 1
+              14:     13(int) Constant 0
+              16:             TypeInt 32 0
+              17:             TypePointer Function 16(int)
+              19:             TypeImage 16(int) Buffer nonsampled format:R32ui
+              20:             TypePointer UniformConstant 19
+  21(g_tBuf1du1):     20(ptr) Variable UniformConstant
+              24:             TypeVector 6(float) 4
+   25(PS_OUTPUT):             TypeStruct 24(fvec4)
+              26:             TypePointer Function 25(PS_OUTPUT)
+              28:    6(float) Constant 0
+              29:   24(fvec4) ConstantComposite 28 28 28 28
+              30:             TypePointer Function 24(fvec4)
+              32:             TypePointer Output 24(fvec4)
+       33(Color):     32(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+          8(r00):      7(ptr) Variable Function
+         18(r01):     17(ptr) Variable Function
+       27(psout):     26(ptr) Variable Function
+              12:           9 Load 11(g_tTex1df1)
+              15:    6(float) ImageRead 12 14
+                              Store 8(r00) 15
+              22:          19 Load 21(g_tBuf1du1)
+              23:     16(int) ImageRead 22 14
+                              Store 18(r01) 23
+              31:     30(ptr) AccessChain 27(psout) 14
+                              Store 31 29
+              34:     30(ptr) AccessChain 27(psout) 14
+              35:   24(fvec4) Load 34
+                              Store 33(Color) 35
+                              Return
+                              FunctionEnd