This generalizes memory access sorting to use SCEVs instead of relying on constant offsets.
I'm not entirely sure my use of SCEV here is sane, both in terms of using the cache (if it's ok to rely on the cache, I can get rid of the map and simplify the whole thing), and in terms of expecting "SCEV.getMinusSCEV(X,Y) returns a constant" to be transitive. @sanjoy , I'll really appreciate feedback on both.