Change the s.buffer.load to have a memory read effect, correctly
representing that it reads memory and matching the backend's
representation of the intrinsic.
This is forked out of D146761, a larger refactoring of the buffer
On its own, this commit may have performance implications for users of
s.buffer.load (who are, to my knowledge, mainly Mesa) who may be
relying on that lack of memory effect to hoist loads from constant,
invariant buffers out of loops, for example.
However, when the full buffer refactoring lands, s.buffer.load's new
form will take a pointer-valued argument and thus, the constant-ness
of the buffer will be expressible using annotations as the callsite,
such as "noalias", so this fixup should not have a long-term