Improve parity of client interface

This brings the client objects closer in parity to the Service/Operation objects.  Specifically:

* Allow acces/secret key and session_token to be provided to the create_client calls
* Emit the same events as the Operation.call() method


In order to emit the same events, this also meant that the kwargs for each emitted event had to be the same between the client interface and the other interface.  This did require some slight changes to some of the kwargs, and will subsequently require a change to the AWS CLI handlers as well (which I'll send once this PR is through).

cc @kyleknap @danielgtaylor 
It's an integration test so it's both in this case.  In order to work with non-classic S3 regions, you need the expect-100 continue behavior to work which is all done through the event system.