Add important metadata support / Default to filename when S3ObjectName not provided

This update is mainly to provide some support for important metadata such as:
ContentType
CacheControl
ContentEncoding
StorageClass
Acl

I also changed the S3ObjectName to default to express file name.

This is an update to an old pull request. Updated to the current version.