Added ``unique_id_uses_count`` to hooks.

This parameter acts like a semaphore/recursive lock for an event with a
unique id such that the event can only be completely removed once the number
of unregister calls to the event equals the number of times it has been
registered.  The unique id event is still only registered once despite multiple
register calls when unique id is used.
Merge pull request #336 from kyleknap/recursive-event

Added ``unique_id_uses_count`` to hooks.
Recreate failed requests to refresh timestamp

If the request timestamp is not updated before a retry, it may
eventually fail with a RequestTimeTooSkewed error. Create a new request
before retrying so that the timestamp is updated. With a new request,
resetting the stream is no longer necessary, but the existing response
needs to be closed so the server stops waiting for it to be handled.

This requires some refactoring to pass through the original request
parameters and signer to _send_request(). An existing test using
_send_request() needs to be changed to reflect the new signature.
Remove reset stream test

Since the request is now fully recreated when retrying, the stream of
the current request will not be reset.
Add test to check if request recreated on retry

When retrying, a request is recreated with new authorization. Check that
add_auth() is called for each retry.