Move retry event registration to service-data-created

Makes it (almost) possbile to support retries in the client
interface as well.
Add support for testing retry behavior
Fix issue when resigning requests

More fallout from reusing the same request object to resign
a request.  Before setting a value for a header, we need to first
check if the key exists and delete it first, otherwise it's an
append, not a replace, which will cause signing errors.

Though not strictly required for some signers, I think it's important
to be consistent and just state that before setting a header value,
we should delete it first if it exists.
Add assertion to unit test for retry handler
Merge branch 'verify-retries' into develop

* verify-retries:
  Add assertion to unit test for retry handler
  Fix issue when resigning requests
  Add support for testing retry behavior
  Move retry event registration to service-data-created