Currently, we use a set of pairs to cache responces like CompareSCEVComplexity(X, Y) == 0. If we had
proved that CompareSCEVComplexity(S1, S2) == 0 and CompareSCEVComplexity(S2, S3) == 0,
this cache does not allow us to prove that CompareSCEVComplexity(S1, S3) is also 0.
This patch replaces this set with EquivalenceClasses any two values from the same set are equal from
point of CompareSCEVComplexity . This, in particular, allows us to prove the fact from example above.
This gives a significant compile time speedup on an internal test with huge SCEVs.