Simplify comparison implementation

This was triggered by issue #3532. The comparator interface could return
the following facts simultaneously A == B, A == C, B < C if A could
not be compared to others.

Now we will have A placed after B and C in any case.

Also, since most comparators can compare all caches, the defalut is true
and can be overriden if needed.