Merge branch 'release-0.47.0' into develop

* release-0.47.0:
  Bumping version to 0.47.0
Revert emr specific retry delay function

Just use default randomization for now.
Add waiter for cluster running to emr
Merge branch 'emr-models' into develop

* emr-models:
  Add waiter for cluster running to emr
  Revert emr specific retry delay function
Support profiles only in the creds profile

In order to properly support the shared credentials file.
Update fix_s3_host to check for sigv4 subclasses

We shouldn't be messing with the host when we use the
s3v4 presigned auth either.
Merge branch 'shared-creds-profiles' into develop

* shared-creds-profiles:
  Support profiles only in the creds profile
Merge branch 'presign-fix-host' into develop

* presign-fix-host:
  Update fix_s3_host to check for sigv4 subclasses
Fix response parsing for get-bucket-policy

This is the case where we have a single output member,
and that member is marked as a payload, as we see in
GetBucketPolicy.
Fix py3 bug in xml response parser
Fix py26 bug in xml parser

So in py26 invalid xml raises a SyntaxError.  Updated
the compat module to hide this difference.

Verified all tests pass in py26, py27, and py33.
Merge branch 'get-bucket-policy-fix' into develop

* get-bucket-policy-fix:
  Fix py26 bug in xml parser
  Fix py3 bug in xml response parser
  Fix response parsing for get-bucket-policy
Handle case where S3 returns a 200 error response

From http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html:

There are two opportunities for a copy request to return an error. One
can occur when Amazon S3 receives the copy request and the other can
occur while Amazon S3 is copying the files. If the error occurs before
the copy operation starts, you receive a standard Amazon S3 error. If the
error occurs during the copy operation, the error response is embedded in
the 200 OK response. This means that a 200 OK response can contain either
a success or an error. Make sure to design your application to parse the
contents of the response and handle it appropriately.

Operations that need this behavior:

- CompleteMultipartUpload
- CopyObject
- UploadPartCopy

The fix here is to switch the status code to 500, because, for all
intents and purposes, this is an error response.  This ensures it
goes through our normal 5xx retry logic and exception handling/raising
code.
Add more tests for s3 200 error responses
Fix grammar in test failure message
Merge branch 's3-copy-fix' into develop

* s3-copy-fix:
  Fix grammar in test failure message
  Add more tests for s3 200 error responses
  Handle case where S3 returns a 200 error response
Update models to the latest version
Bumping version to 0.48.0
Merge branch 'release-0.48.0'

* release-0.48.0:
  Bumping version to 0.48.0
  Update models to the latest version
  Fix grammar in test failure message
  Add more tests for s3 200 error responses
  Handle case where S3 returns a 200 error response
  Fix py26 bug in xml parser
  Fix py3 bug in xml response parser
  Fix response parsing for get-bucket-policy
  Update fix_s3_host to check for sigv4 subclasses
  Support profiles only in the creds profile
  Add waiter for cluster running to emr
  Revert emr specific retry delay function