improved clojure merge sort