Initial support for DBSubnetGroup
_sign_string private_key_file can now be file-like

Distribution._sign_string is now a little bit more flexible, allowing
the private_key_file to be a file-like object (or really anything with a
.read() method).
Added support for block device mappings in autoscaling groups (re #753, #1343)
updat incorrect copyright
Add missing function parameter (re: #1357)
add integration test
Make subscribe_sqs_queue idempotent

This patch changes the sid from being a random UUID4 string to an md5
hash of the combined topic & queue ARN.  Since the Sid is now a known
value we can check to see if a Statement with the given Sid already
exists.  If it does, do not add it again.

The reason for this is that as subscribe_sqs_queue is it isn't
idempotent.  It will add the same statement (with a new Sid) repeatedly
until you hit the limits of the SQS Policy (20 statements, 8192 bytes).
Clean up some unnessary if statements
Initial integration tests for idempotent subscribe

For https://github.com/boto/boto/pull/1414

There is occasionally a failure on the first assert in
'test_idempotent_subscribe' where Amazon hasn't yet propogated the
policy change when we do the get_attributes after the first subscribe,
so it still has 0 statements in it.  I'm not sure what the best way to
deal with this is.
cloudformation Stack DisableRollback is always True

Fix problem where DisableRollback is always true, because
bool("False") == True
Added sleeps to allow amazon time to propogate

The policy statements would some times not be propogated by the time we
went looking for them.  While I hate inserting time into the tests, this
seems to be the safest way.  I believe 3 seconds should be enough (1 was
enough in all my tests).
travis is secure by default now
Adding updated values for recurring autoscale operations
Adding updated documentation for the new variables
Fixed missing import.
Merge remote-tracking branch 'phobologic/sns_subscribe_idempotent' into develop
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
added docs for param_group in rds modify
Updated requests to something more modern.