s3: Use returned ETag as authoritative MD5 content hash

AWS supports sending a Content-MD5 header along with the data. The AWS server will re-hash the data received, and if the server-generated hash does not match the received hash, the request will fail and the content will be discarded.

This offers a significant performance boost over the previous version, as the content of the file only needs to be sent over the internet once per transaction.

References:
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html