Add support for customizing response parsing behavior

This adds a ResponseParserFactory, which also has a hook
that allows a user to specify default parsing behavior
for blob and datetime types.

This can then be plumbed through to the session such that
other libraries (like the AWS CLI can change the response parsing
behavior).

There's an integration test that shows an example of this (https://github.com/jamesls/botocore/commit/06323e38a6977d01726ddf6873a53e755ffe4b52).

Note that this is not currently supported in the clients yet.  I do plan on porting this through to the clients but I wanted to get this change in first.

cc @kyleknap @danielgtaylor 
Should this be 'string or file-like object'?