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 might rewrite this as

```java
import javax.ws.rs.core.Response.Status;
...
chain.doFilter(request, resp);
Status status = Status.fromStatusCode(resp.getStatus());
if (status.getFamily() == Status.Family.SUCCESSFUL) {
    eventSinkProvider.get().sendEvents();
}
else {
    log.debug("Request failed, skipping event sending, status={}", status);
}
```
(It's okay to do `==` with Enums although you can also use `equals()` if desired)

Or if you just want to stick with integers, you could just store the status integer before the `if` and then not have to use the `isDebugEnabled()` block.