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.
* Remove unused dependency vectors
* Removes unused symbols from the :refer clause, or the entire clause if
  nothing is left
* Remove unused imports
* Pretty print the ns

For now the pprint code is relies on `clojure-mode` to do the actual
indentation, it only inserts newlines in the correct places.

The removal of unused requires and imports relies tools.analyzer which
evals the code to do its work.  Thus the usual caveats about
`(launch-missiles)` top-level forms apply.