Clean up ns declarations and reflection warnings

To remain compatible with Clojure 1.2.1, we refrain from using the
:refer option of :require.

Reflection warnings only appeared in tests, but were distracting.

Killed trailing whitespace.
Import tokenize-args from optparse-clj

This is mostly a straight adaptation of:

https://github.com/guns/optparse-clj/blob/fb15b9b07bba545c195e888d341a48c3a29753b2/src-cljx/guns/cli/optparse.cljx#L25-L74

except that a short-circuiting reduce/reduced has been translated into
the equivalent loop/recur for compatibility with older versions of
Clojure.
Add private cli/normalize-args

This is meant to transparently extend the advantages of tokenize-args to
cli/cli, without changing any other functionality.
Extend GNU option conventions to cli/cli

Via normalize-args from the parent commit.
Add cli/compile-option-specs

Compiled option specifications are a vector of:

{:id           Keyword  ; :server
 :short-opt    String   ; \"-s\"
 :long-opt     String   ; \"--server\"
 :required     String   ; \"HOSTNAME\"
 :desc         String   ; \"Remote server\"
 :default      Object   ; #<Inet4Address example.com/93.184.216.119>
 :default-desc String   ; \"example.com\"
 :parse-fn     IFn      ; #(InetAddress/getByName %)
 :assoc-fn     IFn      ; assoc
 :validate-fn  IFn      ; (partial instance? Inet4Address)
 :validate-msg String   ; \"%s is not an IPv4 host\"
 }

The vector option spec format is desugared into the map above. All
entries are overridable, allowing for fine control of the resulting
option map after parsing an args sequence.

Additions from cli/cli include:

    :default-desc   A string that is used to represent the default
                    value, in case the string representation of the
                    default is too ugly to be printed in help output.

    :required       All options are considered boolean flags by default,
                    unless this value is truthy. The value if present
                    should be a string that will be printed as an
                    example required argument to the option.

    :validate-fn    Validates required option arguments *after* being
                    parsed by parse-fn. Exceptions are caught and return
                    nil.

    :validate-msg   If validate-fn returns a falsy value, validate-msg
                    is conjed onto the parse-opts :errors vector.

cli/compile-option-specs asserts the presence of an :id value in every
map, as well as the uniqueness of all :id, :short-opt, and :long-opt
values.
Honor TCLI-1

"Do not include keys when no value provided and no :default"
Add core option parsing routine
Add cli/summarize

Default options summary generation function. More minimal than
cli/banner-for, and also does not handle any other text besides the
options summary.
Add public fn cli/parse-opts

This is the new clojure.tools.cli API. The docstring describes the
complete contract for the function.
Make cli/summarize public

This allows users to call our summarize fn from within their custom
:summary-fn in case they wish to insert our summary into a template,
while still having access to the underlying spec in a few other places
in their :summary-fn.
0.3.0-SNAPSHOT

Also, add Sung Pae to the developers list.