boto/dynamodb2/layer1.py:
  Now the response is read and then decoded before being used, in make_request() and _retry_handler().

boto/dynamodb2/table.py:
  Now BatchTable exits with context only after processing ALL the items, including items sent back by DynamoDB as unprocessed items.

boto/s3/key.py:
  md5 is decoded before being returned in _get_base64md5().
  Fixed etag and md5 comparison in should_retry().