Fixes for groupshared (issue #11)

The structure for groupshared is defined by dcl_tgsm_structured rather
than a constant buffer.
Create a constant buffer from the information in dcl_tgsm_structured
otherwise LookupStructuredVar will return a bad pointer.
groupshared mem can now be declared as float/vec2/vec3 or vec4.
Additional offsets added for multi-component loads and stores -
otherwise the same component would be read or written.