This patch simplifies the comparison of unordered multiset and multimap by first
trying to find a common prefix between the two containers, in case they
happen to be ordered the same.
This also adds some tests for corner cases of unordered_{multimap,multiset}
comparison that wasn't tested previously.
This seems odd to me.
The old code cached both __x.end() and __y.end().
The new code caches only __x.end().
Why?
Either it's worth caching end() or it is not.