Implement a better memoize for parallel use cases

Implement an alternate memoize which performs better than clojure.core/memoize when the memoized function is invoked in parallel by ensuring that memoized values cannot be recalculated even by retry behavior on clojure.core/swap!
Merge pull request #22 from arrdem/patch-1

Implement a better memoize for parallel use cases
Merge pull request #17 from jafingerhut/master

Fix a couple of bugs in key-comparator
Merge commit '@{1}' into develop