An implementation of graph isomorphism for Graph equality.
The underlying algorithm is exponential but will only enter
a non-deterministic polynomial part when there are a lot of difficult to
distinguish anonymous nodes
connected to each other by statements with the same property(s).
Non-pathological examples, where most nodes have some properties that
help distinguish them from other nodes, will experience nearly linear
performance.

Return an isomorphism between the two models.
This function is nondeterministic in that it may return a
different bijection on each call, in cases where there are
multiple isomorphisms between the models.

Returns:

null on failure or an array of related pairs
(arrays of length 2) of anonymous nodes.
match(m1,m2)[i][0] is from m1,
and match(m1,m2)[i][1] is the corresponding node in
m2.