Restrict insertion of (:refer-clojure :only [])

More specifically, it should only appear when it appears in the old ns
Fix test-stitch-up
Ensure :import lists are sorted

Sorting takes place at three different levels:

- The top-level reference forms are hand sorted:

        (:require …)
        (:import …)
        (:refer-clojure …)
        (:gen-class …)
        (:load …)

- The libspecs in :require and :import can be string sorted:

        (:require …)            ; sort-by str
        (:import …)             ; sort-by str

- Finally, the option pairs of each reference form are placed in
  predetermined order (:as … :refer … :exclude … :rename …). Vector
  option values are sorted with sort, and map values (for :rename) are
  converted to (sorted-set).

  :gen-class and :load are _not_ sorted. The order of :load is
  significant, and we wish to respect the user's ordering with
  :gen-class.

        (:require …)
        (:import …)
        (:refer-clojure …)
        (:gen-class …)
        (:load …)
Parse leading maps in namespaces as metadata

clojure.core/ns allows metadata to be attached to the ns:

        (ns my.ns
          "Optional docstring"
          {:note "This is metadata"})