"SortExample" contains the main method for this program.

This example shows how interface definitions can be used to define groups
of method signatures that particular classes will be required to implement.

In this case an interface "Sortable" is defined.  Any class implementing the
interface has to provide a comparison method -- in this case we build on the
previous example with "Real" and "Integer" being set to be sortable, as
well as a new "SortableInt" class.

Note how, as with the "abstract-classes" example, the comparison method has
to accept any "Sortable" object as its parameter.  This means that the
implementations typically have to start by examining what they have received
and testing whether it is comparable to them -- for example, if a
"SortableColour" class were to be defined (say in rainbow order) then you'd
expect that the implementation in "SortableInt" would raise an exception if
a colour was being compared to an integer.

