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.
* `val` is redundant when used in a case class
* the case class is misleading here: it is not immutable as it relies on mutable inner objects