Add dictionary diff when response tests fail

Basically so it looks like assertDictEqual in the
unittest class.
Add 'Code' to json error response parsing

The XML error response parsing has a 'Code' attribute
as well as a 'Type' attribute.  I've added a 'Code' attribute
to the json errors, which is extracted from the __type
key if it exists.

This is useful for things like retries which are based on the
error codes returned by the services.
Add hooks for pluggable retries
Initial commit of retry handlers

Still not finished.
Add retry configs into model translation process

This injects retry config into the relevant service specific configs.
Add retry configuration file
Rename event name for retries
Python3 compat fix in model translation
Add per operation registrations for retry
Refactor endpoint class to remove duplication

No functional change, pulled up commonalities into the
base Endpoint class.  The only thing that's different between
the endpoint classes now is how to "serialize" a request.
Probably will pull out into separate serializer class later.
Move retry into endpoint class
Implement crc32 retry check
Allow checksum error to propogate

The MaxAttemptsDecorator can accept exceptions to catch,
and if the max attempts is exceeded it will allow the exception
to propogate.  In the case of ddb checksums, if we fail to validate
the checksum we want it to propogate once we use up all our retries.
Add docstrings
Fix linting issues
Enforce that base must be greater than 0
Merge branch 'retries' into develop

* retries:
  Enforce that base must be greater than 0
  Fix linting issues
  Add docstrings
  Allow checksum error to propogate
  Implement crc32 retry check
  Move retry into endpoint class
  Refactor endpoint class to remove duplication
  Add per operation registrations for retry
  Python3 compat fix in model translation
  Rename event name for retries
  Add retry configuration file
  Add retry configs into model translation process
  Initial commit of retry handlers
  Add hooks for pluggable retries
  Add 'Code' to json error response parsing
  Add dictionary diff when response tests fail