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.
You're right that the existing test seems messed up. Strange.

On the other hand we already have a `qs` option that supposedly does something. I wonder if it's equivalent to extraHeaders?