Better handling for JSON response errors without __type

Fixes #235. Adds handling for `x-amzn-errortype` headers as returned by
Elastic Transcoder. AWS CLI now prints out the exception name along with
any message from the body.

Updated JSON response tests to support a special `__headers` key to set
the response headers. Modified an existing test to ensure the header
gets parsed properly. Retry tests cover everything we are using already,
so I left those alone.
Update ec2 docs for user data and base64 encoding

Looks like we customize our model to be a blob type, but we
never updated the docs.  This has led to customer confusion.

Fixes #366
Add unquote_str to compat module

This gives us a single consistent interface that allows us to
urldecode and string and decode it to unicode in a single function.
Merge branch 'ec2-user-data' into develop

* ec2-user-data:
  Update ec2 docs for user data and base64 encoding
Fix py2 failure in unquote_str
Merge branch 'unquote_str' into develop

* unquote_str:
  Fix py2 failure in unquote_str
  Add unquote_str to compat module
Fix py3 failure, do not modify method sig
Merge pull request #257 from danielgtaylor/json-error-retry

Better handling for JSON response errors without __type. Fixes #257, #235.
Handle capitalized message key in errors

Fixes #256 by looking for both `message` and `Message` in returned errors.
Adds a test to ensure this works as expected.
Merge pull request #260 from danielgtaylor/error-message

Handle capitalized message key in errors. Fixes #256.