Refactored default credentials and added environment credentials

A new credentials decorator, `EnvironmentCredentials`, is now available with this pull request, and it is automatically use in the default credentials such that credentials are looked for in the environment before trying the instance metadata credentials. Two immediate benefits are the following:

- Environment credentials that can be provided to Beanstalk environments via the console can now be picked up by the SDK automatically
- It's now possible to use environment credentials in your development environment, which makes it easy to run your app locally if your production environment relies instance profile credentials by using environment credentials, which require no code changes to your app.

One thing to double check for accuracy is that I have removed `ClientBuilder::getDefaultCredentials` completely. It seemed to be duplicating the logic in `Credentials::factory`, which it called, so it really was a pointless function.

Tests are updated and everything appears to be working fine.