1 millon * improvement to isomorphism

Much better isomorphism implementation with lazy data structures and better algorithm. Can fail if complexity of calculation is too big, and that is user settable.
Any good reason to make it `lazy`?