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.
You should be able to avoid the `.isBNode` with something like `case Triple(BNode(_), _, _) | Triple(_, _, BNode(_))`