spirv: Do more complex unwrapping in get_nir_type
The OpenGL flavor of SPIR-V allows for samplers inside structs. This means that our simple array-of-array handling isn't sufficient and we need something substantially more complex for generating NIR types.