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.
for all your exceptions, I don't see a good reason for making them a case class.