EventBus failure handling

* Fixed an issue where for failed handling, both an `EventHandlingFailedEvent<T>` and a `EventHandlingSucceededEvent<T>` were published.
* Changes to allow dispatching of `EventHandlingFailedEvent<T>` and `EventHandlingSucceededEvent<T>` to all handlers (i.e. for `T` and its inheritance chain).
This is a **breaking change**: handlers should now be defined for interfaces `IEventHandlingSucceededEvent<T>` and `IEventHandlingFailedEvent<T>`, and the concrete types are no longer publicly creatable (but can be created in tests via `EventHandlingSucceededEvent.Create()` and `EventHandlingFailedEvent.Create()`).
* Added `Conventions.RetryableEventHandlingExceptionFilter`, a filter function that allows some failures during event handling to be designated as *retryable*. These exceptions aren't dispatched as `IEventHandlingFailedEvent<T>` events, but are instead alowed to "bubble up".