Detect and warn about double-run() invocations
Make TabifyingCommand work with stuff that inherits directly from BaseCommand
API CHANGE:  replace print_version_and_exit with format_version

The --version option was previously subject to syntax validation of
other args when it shouldn't be.  This commit switches to a 'version'
arg type, but this comes at the cost of replacing the
print_version_and_exit function with a format_version function that
simply returns the version string.
Add FileTransferProgressBarMixin
Fix user/region option handling
Fix incremental response streaming
API CHANGE:  remove service from BaseAuth.__init__ args

It's currently impossible to construct an auth handler outside of the
context of a service's initializer (e.g. when creating a service from
inside another).  This change makes BaseAuth.service default to None,
but BaseService.__init__ will set it if it either gets auth as a keyword
arg or if it creates one of its own volition.  Be aware of this if you
set a service's auth attribute directly.
Deal with plain nginx's failure to handle chunked requests
Add HTTP Get, a sample (but still somewhat useful) request
API CHANGE:  replace default_routes() with DEFAULT_ROUTES

Since Arg objects are owned by the class and not by the instance of the
class, default_routes()'s returning an instance attribute of any kind
makes args go to the wrong instance of the command when the second
instance of one is called.  We replace it with a DEFAULT_ROUTES class
attribute that can only reference instance attributes by using
callables.  It works just like it used to before ea64fcf3, but now it's
plural and usable by services and auth handlers as well.