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.
Merge pull request #20 from greezybacon/feature/s3-hash-use-etag

Reviewed-By: Peter Rotich <peter@osticket.com>