Refactor lein new argument parsing

It was a bit janky and hard to extend. This is maybe still janky, but
very extensible. Win?

We can now easily add new options to this command. I took some pains to
maintain backwards compatibility, even with the undocumented ability to
pass arguments on to templates. The full extent of this syntax isn't
documented in the docstring yet, but I'll expand that once we support
options that expose its darker corners.
Better error messaging when we try to load a broken template
Add a flag to allow SNAPSHOT template versions

I'm not really sure how to test this without really going to Clojars. I
have a few templates that could be used to do this testing but feel
weird about adding network calls to the tests.
Move parse-options into leiningen.core.main for general use.

Also remove support for single-dashed args.
Move parse-options test, fix typo.
Add exclusion suggestions for version ranges.
Clean up dependency-str weirdness of version calculation.