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
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