s3: Use Content-MD5 header instead of download

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.