read/modify/write on modify command the headers and ACL

When calling modify, S3 normally resets headers and ACLs to a default
we probably don't want.

Keep the header and ACL the same (unless that's what is being
modified) by reading the header and ACL before invoking the modify,
then write the ACL after the modify completes.