Dgoodwin/events on success

Send events on request or job success only. This should prevent situations where we confuse gutterball should there be any case where we dispatch an event, and the request later fails somehow on commit.

Uses either the guice RequestScope, or a custom PinsetterScope, to ensure that only one instance of EventSink is passed into application code for that request/job. EventSink holds onto the events to be dispatched, which happens in the EventFilter for requests, and the KingpinJob parent class for jobs.
I don't think these `gets()` should be necessary.  The ConsumerResource is going to be [created as needed](https://github.com/google/guice/wiki/Scopes#choosing-a-scope) so it'll be in the scope of whomever asked for it.  I.e. ConsumerResource isn't going to be in a scope broader than the EventSink it needs.  The only time you need to `get()` is when you're in a broad scope requesting a binding from a narrow scope.  E.g. a Singleton that needs an instance of a RequestScope object.

```
 If the object is stateless and inexpensive to create, scoping is unnecessary. Leave the binding unscoped and Guice will create new instances as they're required.
```