Refactor adding options to headers and add CopyOptions to s3

Hopefully the change to the signature of PutCopy isn't a problem; at the very least, it should be trivial to refactor existing code.