A trait for representing total orderings. It is important to
distinguish between a type that has a total order and a representation
of total ordering on some type. This trait is for representing the
latter.
A total ordering
is a binary relation on a type T that is also an equivalence relation
and partial ordering on values of type T. This relation is exposed as
the compare method of the Ordering trait.
This relation must be:

reflexive: compare(x, x) == 0, for any x of
type T.

symmetry: compare(x, y) == z and compare(y, x) == w
then Math.signum(z) == -Math.signum(w), for any x and y of
type T and z and w of type Int.