Implement multi-region support

This is primarily done by implementing new calling format and S3
endpoint detection code, seen in the wal_e.s3.calling_format module.
The precise rules for figuring out what calling format to use and when
to detect regions are seen in from_bucket_name and
CallingInfo.connect.

Deprecate the similarly purposed code in s3_worker.

Depend on 'tox' to make it easier to test against various versions of
boto and Python, which have slightly different behavior.

Furthermore, fix a bug that caused use of storage_uri to not accept
any credentials.  This caused it to copy in credentials from wherever
boto saw fit (such as the environment variables AWS_ACCESS_KEY_ID and
AWS_SECRET_ACCESS_KEY).  It so happens that WAL-E depends on the same
variables and most people apparently use them, so the fact that the
command-line variant, '-k'/'--aws-access-key-id', did not work went
mostly unnoticed for a long time.  This is now fixed, however, by
pushing down credentials everywhere.

Contributors:
Bo Shi
Daniel Farina
Maciek Sakrejda
Add south-asia region to built-in endpoint database

Bo Shi