fixes typo bug #2428
Merge pull request #1 from boto/develop

merge develop to my own repo
Merge pull request #2 from chocobn69/develop

merge from boto/dev
add a unit test
Use svg instead of png to get better image quality
Fix few typo
autoscale module: fix launch_config.user_data creation via connection

backward-compatible support for Python 3.3+
Add some regions to cloudsearch
Route Tables: Update describe_route_tables to support additional route types (VPC peering connection, NIC).
fix typo
Fix bug where headers were presigned incorrectly.

For Sigv4 urls, custom metadata headers were not being presigned correctly.
Add support for  Amazon Route 53 Domains.
Merge pull request #2601 from kyleknap/route53domains

Add support for  Amazon Route 53 Domains.
Added support for Amazon Cognito.

Includes support for both Amazon Cognito Sync and Amazon Cognito Identity.
Added method TaggedEC2Object.remove_tags()

Pull Request #2259 already created an add_tags method to supplement the add_tag
call. Not sure why there isn't an analogous remove_tags method, since the
DeleteTags API also supports removng multiple tags at once. An immediate use
case is to be able to delete all the tags of an instance; with only remove_tag,
this will unnecessarily involve many round trips to AWS.
Removed duplicate code in add_tag and remove_tag

Since add_tags is a more general version of add_tag that uses the same API
call, add_tag can simply call add_tags with the correct parameters. Likewise
for remove_tag and remove_tags.

For remove_tag in particular, these lines were redundant:

    if value is not None:
        tags = {key : value}
    else:
        tags = [key]

Since EC2Connection.delete_tags just converts the list back to a dict of {key:
None} anyway, these extra checks serve no purpose.
Fixed remove_tags not checking values, fixed test

Fixed Issue #2414. remove_tags now locally verifies that the value given for a
key matches the one in self.tags before deleting it.

Fixed TestRemoveTags.test_remove_tag_empty_value in ec2/test_ec2object. An
empty string is _not_ supposed to act like None to unconditionally delete the
tag. The original test acted like it does.
Added tests for TaggedEC2Object.remove_tags

There are 3 tests: test_remove_tags simply makes sure multiple tags are deleted
in one request. test_remove_tags_wrong_values makes sure tags that are provided
wrong values are not deleted. test_remove_tags_none_values make sure that tags
provided with None values are unconditionally deleted.
Fixed TaggedEC2Object.remove_tags failing in Python 3
common modules: tidy up to meet PEP8 better