Add RequestSigner class.

This introduces a new `RequestSigner` class to handle the signing of
requests. It fires the following events:

* `choose-signer.service.operation`: Allow overriding signature version
* `before-sign.service.operation`: Allow mutating request before signing

It is currently not used by anything, but is included as part of #414.

cc @jamesls, @kyleknap