Support base64 encoding of bytes input for JSON blob types.

This pull request modifies the code added in ffcef5f to also support
arguments passed in as bytes, such as those you might encounter when
using KMS.

See this related issue: boto/boto3#31

```python
import boto3
kms = boto3.client('kms')
result = kms.encrypt(KeyId='some_key_id_redacted',Plaintext='my name is bob')
kms.decrypt(CiphertextBlob=result['CiphertextBlob'])
```

Since the JSON data for serialization tests doesn't support specifying
bytes as input, I've added a new test class to cover this case.

cc @jamesls, @kyleknap