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.
Does it go in the headers, or in the query string? Both!?!?