Add clean-ns

* Eliminate :use clauses
* Sort required libraries, imports and vectors of referred symbols
* Rewrite to favor prefix form, e.g. [clojure [string test]] instead
  of two separate libspecs
* Raise errors if any inconsistencies are found (e.g. a libspec
* with more than one alias.
* Remove any duplication in the :require and :import form.
* Returns nil when nothing is changed, so the client knows not to do anything.

For now the pprint code is relies on `clojure-mode` to do the actual
indentation, it only inserts newlines in the correct places.  I've tried fipp
and clojure's own pprint, but they're both somewhat inadequate.

I would like to include the remove-unused-requires functionality in this
operation as well, but I want to get some more eyeballs on this sooner
rather than later.