Clojure/ClojureScript efficient map and set structures that preserve insertion order