only upload file to AWS if MD5 hash has changed

Compares an MD5 hash of the local file to the stored MD5 on S3 (in the etag field) before uploading so that only changed files get uploaded to S3. Save time and $!
Good suggestion.

I’d extract the entire construction of `md5_by_key` into a separate helper function.