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
Fix exit on 404

Most errors deserve a retry, but a notable exception is a missing
archive file.  This regressed because use of boto storage_uri was
deprecated when implementing multi-region support.

As-is, wal-e will spin in a tight loop when encountering such a
missing archive file without ever notifying Postgres that it is not
currently present.
Pass --no-password to psql

It is a foot-gun to prompt for a password in WAL-E operation, which is
nominally non-interactive.

This feature was added in Postgres 8.4's 'psql'.  Given that 8.3 has
reached EOL at this time, deprecate this modulo complaint.
Notate psql 8.4 dependency because of use of --no-password
Add missing contributors
Fix buckets in S3-Classic/US-Standard that have dots

us-standard buckets that have dots ('.'), but are otherwise subdomain
compatible and could successfully run get_location(), which would
return '' (empty string), which is not seen in the region dictionary,
causing WAL-E to crash.

The fix is to re-write a successful get_location() of '' to
'us-standard'.

A regression test has been added.

This was not exercised by previous testing because all of them
combined other strangeness of bucket-name (like upper-case) that would
cause defaulting to us-standard.  Also, those that use an IAM set up
that does not permit get_location would not see this regression.

Reported by Christophe Pettus
Fix __exit__ in contexts

The return value of __exit__ is used to determine if Python should
re-raise exceptions, False meaning 're-raise'.

The dangerous looking one is the one in StreamPadFileObj, where a
.close() that might somehow yield a non-False-ish return could cause
exceptions to be swallowed.

It doesn't seem likely that'd ever be the case, but the code as
written needlessly relies on that for correct behavior and obscures
the intent.

Backpatch this change to 0.5, too.
wip

Signed-off-by: Daniel Farina <daniel@heroku.com>
wip

Signed-off-by: Daniel Farina <daniel@heroku.com>
wip

Signed-off-by: Daniel Farina <daniel@heroku.com>
wip

Signed-off-by: Daniel Farina <daniel@heroku.com>
these exports are unnecessary

Signed-off-by: Daniel Farina <daniel@heroku.com>
wip

Signed-off-by: Daniel Farina <daniel@fdr.io>
pep8
Strip instance profile stuff; I still do not understand it