Implement graph hashing & fast graph isomorphism

- Implement a graph hashing algorithm based on TE Portegys's paper
  "General Graph Identification With Hashing"
- Implement a graph isomorphism test based on graph hashing

---------------------

The custom memoize implementation allows for better performance in some parallel cases, but as with the clojure core memoize never clears the cache possibly leading to memory issues for repeated hashing of extrememly large graphs.

The design decision was made to provide a custom hash function rather than add a hashing library. This choice is open to debate.

The use of a dynamic hash-algo var is also open to debate, but should cause issues with sequence lazyness since all lazy seqs will be fully computed and hashed before the hashing function exists.