Integrate events into the client objects

This adds the before-parameter-build, before-call,
after-call events.

Now all the event handlers can use the client interface as
well as the previous interface.

There's one outstanding event handler that can't be ported yet,
and that's the EBS copy snapshot handler.

I've also added an integration test using the client interface.
This uses S3 which has a number of event handlers.  This ensures
that we're able to perform basic operations using the S3
client, and that the event handling is wired up properly.