Allow idempotent request signing

This fixes a bug where request signing is not
idempotent.  This is because setting a header
value does not replace the old value, it actually
appends the new value to a list of values associated
with the header name.  This causes issue when the
same request is retried, particularly with S3 retries.
Merge branch 'fix-auth-resign' into develop

* fix-auth-resign:
  Allow idempotent request signing