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.
It's not quite equivalent. If you trace the `qs` use [here](https://github.com/LearnBoost/knox/blob/master/lib/client.js#L864) it is being appended to the `resource` value which is not being used as the `CanonicalizedAmzHeaders`. My understanding is that Amazon S3 signing supports both the URL containing querystring parameters or signed HTTP headers. Personally I would like to be able to do both. Maybe in the `client` object we could create a new signedUrlWithHeaders or something as the spec supports both and I don't believe knox currently supports both with existing implementation.