A port of clojure.algo.generic to ClojureScript