Eliminate integer modulo from probing loop
Rewrite of MojoMultiMap

MojoMultiMap did not scale well due to an O(n^2) search for children of
a given parent. Refactored the code to use a map of sets. Each parent
in the map has a set of children. I was not able to do this with fixed
arrays, so the option to initialize MojoMultiMap with a preallocated
array is gone. API of MojoMap has changed, and so has the API of
MojoRelation, which patched most of its functions through to its
internal MojoMultiMap.

Updated all MojoFn classes to work with the new API. The MojoFn API
itself has *not* changed.

Also added functions MojoEqualTo, MojoSubsetOf and MojoSupersetOf,
which compare abstract sets.

Added unit tests for MojoEqualTo etc.
Partial rewrite of MojoFn

In the proces of simplifying the MojoFn code.
Further rewrite of MojoFn

Added classes MojoFunction and MojoFunctionDeep. All MojoFn templates
are now based on these two functions.
Further simplification of MojoFn

Discovered redundant set expression in the "Closed" versions.
Removed MojoFn

MojoFn is now redundant. The behavior of variations
(MojoFnInverseClosedDeep and so on) can be achieved by combining
MojoFunction (or MojoFunctionDeep) with boolean set expressions. The
new set up also allows the use of functions that map from one domain to
another. More flexibility and smaller API.