spirv: Reorganize how we store types related to a `vtn_pointer`
After this MR, to get the types related to a pointer, we use
struct vtn_pointer *p;
p->type; // type of this pointer
p->deref; // NIR deref of this pointer (unchanged)
p->type->pointed; // type of the object pointed by this pointer
Individual commit messages tell the details. These were previously reviewed by Faith.