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