support extra (required) S3 pre-signed headers

This adds initial support for extra signed headers that can be used in a pre-signed `PUT` URL. The extra headers supplied by the client at upload time.
Why do we make users put x-amz-meta-myField in a special hash, whereas x-amz-acl works fine just in the main hash?