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 $!
try:
```ruby
if (!md5_by_key[key]) || (Digest::MD5.file(file_path).hexdigest != md5_by_key[key])
```
this way when adding new provider MD5s there will be no need to change the code