Add asplode/expand-imports and asplode/expand-libspecs

This is the first commit towards a proper ns parser for more accurately
divining the user's preferences from the old ns-map.

regrow/expand-libs and associated functions will be removed once the
parser is complete.
Add asplode/default-namespace-references

This is the core data structure to which ns forms will be compiled.
Add asplode/parse-refers

parse-refers for handling :refer-clojure and :use forms.

cond-> is backported from Clojure 1.5 for convenience; it should be
removed when the Clojure dep is updated.
Add asplode/parse-requires

For parsing :require statements.
Add asplode/parse-uses

For parsing :use forms, which are a combination of both 'require
and 'refer, and thus implemented in terms of 'parse-requires and
'parse-refers.
Add asplode/parse-libs

Generic ns key/value parsing function built with the other parse-* fns.
Handles all reference forms, including :load and :gen-class.
Change vmerge strategy

Since ns forms are handled imperatively, repeated declarations like

        (ns foo
          (:require [clojure.test :refer [deftest]]
                    [clojure.test :refer [is]]))

result in both 'deftest and 'is being referred, instead of just 'is as
might be expected.

Thus we should recursively call vmerge for deep merging via itself.
Rewrite asplode/asplode with parse-libs

This breaks the rest of the library for now.
Set cond->* private
Rename class-name? -> capitalized?

Capitalized symbols for Vars are uncommon, but not illegal, and are in
use in some common libraries (prismatic/schema is one).
Add stitch/imports-from-map

First of a series of *-from-map functions that generate ns subforms from
the data structures described in asplode/default-namespace-references.
Add generic stitch/keyword-list-from-map

Intended for generating :gen-class and :load forms
Avoid emitting empty ns subforms
Move cond-> to slam.hound.futures
Add stitch/requires-from-map

The meat of ns-to-map. Generating from data finally allows for compound
requires like:

        (:require [clojure.string :as string :refer [trim]])
Use get in ns-requires since coll may be nil
Add special handling for {:refer {clojure.core :all}}

We will be emitting this separately as :refer-clojure
Docstring fixes
Add stitch/refer-clojure-from-map

Special emission of :refer-clojure for 'clojure.core
Pour rename maps into (sorted-map)