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 support for AWS IAM Instance Profiles

By using the command line option --aws-instance-profile, WAL-E can
request and use credentials from the instance metadata.  This option
has high precedence and is mutually exclusive with assigning one's own
AWS credentials.

Editorialized by Daniel Farina <daniel@heroku.com>
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.