Move AWS credential names to top-level in testing

To allow sharing by multiple AWS config parameter objects that may
deem it useful to scrub environment variables.
Refactor blackbox and how configuration and argv is injected

The goal is to allow the 'config' object to manipulate the argv under
test, rather than assuming the test should know how to construct argv
verbatim.

This reflects that argv can be used to set up some amount of WAL-E's
credential in addition to environment variables.

An upshot is that now that the 'main' procedure requires injection via
named fixture, also remove the magicalness of 'autouse=True'.
Replace S3 Credentials a boto's Provider type

This exploits the property that the 'creds' object is opaque to most
of WAL-E, except backend-specific portions.  boto's 'Provider' type is
similar enough to be used in the same way

In addition, the "provider" abstraction supports more features, such
as automatic credential refreshing when using IAM instance profile
support.

Editorialized by Daniel Farina <daniel@heroku.com>
add --aws-instance-profile agument.

If this argument is provided, we'll create a special credential
that knows how to build itself from the instance profile.

Readme blurb about --aws-instance-profile.
Instance metadata unit tests

Patch the get_instance_metadata and see if our Instance Profile provider can
find credentials.

Special case support for boto < 2.9
Support blackbox testing of IAM instance profiles, sort of

"Sort of" refers to the fact that internal contracts in Boto are
monkeypatched in order to fake having an instance profile set-up,
using real, live STS-generated credentials to fill in the blanks.
support it