This replaces the "scalarize then clone-as-uniform" lowering for loads of uniform values with a dedicated mode of memory widening for this case. This avoids needing to relying on instcombine/GVN to clean up after redundant loads.
Note: I plan to do stores too. This patch includes some of the API plumbing on the store side, but doesn't actually use it yet. I thought the consistency in the API was worth a bit of temporarily nop code.
nit: White space change.