i965, nir: Split structure uniform locations are meaningless
When refactoring gl_nir_lower_samplers to use gl_nir_lower_samplers_as_derefs, I basically entirely broke i965's handling of structures with samplers or images. It often worked out because the bad locations on samplers would alias with other samplers, and cause the same behavior...but if they aliased with something else, it could cause crashes.
Gallium drivers never hit this problem as they didn't use location to walk gl_uniform_storage.
This ended up being fairly horrible. I think the end result works. It also makes i965's approach match the one I used in iris a bit more closely.