Add customization to alter scalar parsing behavior

This fixes #1001.  This also fixes a regression we had
when displaying binary content (this [comment](https://github.com/aws/aws-cli/issues/1001#issuecomment-63733293) has more info).

As mentioned on the github issue, we were previously always
showing binary content as base64 encoded.  This PR adds back
this behavior.

In addition, this also gives us a hook into changing the
timestamp parsing so we can later add a config option to
unify the way timestamps are displayed.

Also fixes #970, and closes #1005.

I've also added an integration test for #1001 to ensure
we are in fact displaying a response that can be printed to
stdout.

```
$ aws kms generate-random --number-of-bytes 128
{
    "Plaintext": "N5o3prE4nGiYupVofIvnUGW+YVtohX7qJGcV09G0y6d04mZ9YmnmSdm+7QN7Jlx0wTsJJKUfjMtt2SIwZmbalzDk8H6P+WXtgiMTwzlyuBoQNkJ5+r/n3l3ggsAkyAEmByW1L+cerug7dA2cnItmi7WsL/ojWbVlgy6gNJWwjZM="
}
```

Depends on https://github.com/boto/botocore/pull/386

cc @kyleknap @danielgtaylor