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 are supplied by the client at upload time.