Fix #1146: return response from custom url opener

The previous fix for this (70e9ec) created a proxy opener
and retrieved metadata results, but then called urlopen(...)
and returned those results.  The end result was that you
were getting the proxied result, which is not what we want.

As a side effect of this bug, we were making twice as many
calls to the metadata service than we needed, once using
the custom opener we create, and once using urllib2.urlopen.

I've also added a unit test for this fix.  It's admittedly a bit
contrived, but it did fail before implementing the fix, and it
does pass now with the fix in place.
Only use 2 metadata service calls to get credentials

Because of the lazy loading dict returned when retrieving
IAM role credentials, we were making twice as many calls:

* .../meta-data/
* .../meta-data/iam/
* .../meta-data/iam/security-credentials/
* .../meta-data/iam/security-credentials/role-name

Instead the ``data`` arg is used so that we can make only two
calls, one to retrieve the role name, and one to retrieve the
actual credentials:

* .../meta-data/iam/security-credentials/
* .../meta-data/iam/security-credentials/role-name
Updated requests to something more modern.
Merge branch 'iam-metadata-num-calls' into develop

Closes #1439

* iam-metadata-num-calls:
  Only use 2 metadata service calls to get credentials
  Fix #1146: return response from custom url opener
Merge pull request #1443 from toastdriven/cloudsearch-requests-upgrade

Updated requests to something more modern.
Add redshift to setup.py/docs index
Added underlying DynamoDB v2 support.
Merge branch 'ddb2' into develop

* ddb2:
  Added underlying DynamoDB v2 support.
Bump version to 2.9.0
Merge branch 'release-2.9.0' into develop

* release-2.9.0:
  Bump version to 2.9.0
Add dev prefix back to version in dev branch