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.