Add proper retry config for emr

Two issues:

* We need to use the proper endpoint prefix of "elasticmapreduce",
  not "emr".
* We need to use throttling_exception instead of the throttling
  rule for retry.
Merge branch 'release-0.46.0' into develop

* release-0.46.0:
  Bumping version to 0.46.0
  Update S3 model to the latest version
Refactor config module to not depend on session

All you really need to load a config file is the filename.
Add shared credential provider
Refactored credentials to not depend on session

This also removes __init__ from the interface of a credential
provider and removes a default list of providers from the
credential chain provider.  Instead, that logic has been
moved to the create_credential_resolver factory function.
Remove creds from session vars
Let cred providers load config files
Refactor config variable loading into separate module

This allows it to be extensible and moves more of the logic
out of the session.
Remove config var refactoring

Not quite right.  This puts back the original variable resolution
functionality.
Merge branch 'creds-file' into develop

* creds-file:
  Remove config var refactoring
  Refactor config variable loading into separate module
  Let cred providers load config files
  Remove creds from session vars
  Refactored credentials to not depend on session
  Add shared credential provider
  Refactor config module to not depend on session
Change retry base for emr to be 2.1

Based on guidance from the EMR team.
Merge branch 'emr-retry-json' into develop

* emr-retry-json:
  Change retry base for emr to be 2.1
  Add proper retry config for emr
Add default values of metadata timeout/num_attempts

Fixes broken build, as None values were being passed through
to the fetcher class.
Fix bug for switching to s3v4
Add S3v4 presigner

Allows you to create presigned urls for S3.
Add a general sigv4 presigner

Refactor the s3 v4 signer to use the general sigv4 presigner
where possible.
Consolidate signing tests into a single test module

This corresponds to a single botocore module and puts
all the signing tests in a single test module, with the
exception of SigV4, which is separate because it has its
own data driven test suite, given from the AWS docs.
Add sigv4 presigned unit/integ tests
Update EC2 model to the latest version
Remove ImportKeyPair customization

This is now in the upstream model so it's not needed anymore.