Work on image_load_store

Improvements to ld_uav_typed, dcl_resource_structured and
dcl_unordered_access_view_typed.
Implemented ld_structured, but has issues with loading multiple data types.

Type tracking will need to updated to fully handle ld_structured because
ld_structured can load multiple variables, each potentially having a
different type, but current type tracking deals with one result type per
opcode.
If and breakc opcodes will now compare using unsigned-zero if the
condition is unsigned.
atomic_iadd missing array index on UAV.
Removed some unnecessary type conversion on array indexing

gl_WorkGroupID was being converted from uint to int for an array index
in the tests\ps5\ThreadGroupSharedMem shader.
imul fix and store_raw partial implementation.

imul was not decoded correctly - it has two dests - high and low
32-bits.
Fix type-tracking for imul low 32-bit dest. Use floatBitsToUint on store_raw if the src is float.
Fix src operand types for imul
Partial support for store_structured.

Single scalar stores from tests\ps5\load_store look correct.
Partial support for ld_raw.
Add store_uav_typed to tests\ps5\load_store
Fixes image_load_store and shader_storage_buffer_object features

Better resource->constant buffer mapping.
Fixed decoding type of typed UAVs.
Writing to shader storage buffers moved to a common function.
Storing to shader storage buffers moved to a common function.
Restrict number of components in texture coord for imageStore based on
the texture dimensionality.
Fixed constant upload for the 'generic' test app.