BAOs - Allow BAOs to subscribe to hooks/events via `EventSubscriberInterface` or `HookInterface`
Before: There is no pleasant way for a BAO to register a listener for an
event. True, one can use `Civi::dispatch()`, but (lacking a good
initialization point) it's hard to register reliably. True, you can also
add new items to `\Civi\Core\Container::createEventDispatcher()`, but
this is rather out-of-the-way.
After: A BAO class may optionally implement `EventDispatcherInterface` or
`HookInterface`. Methods will be automatically registered. The list
of listeners will be cached in the container.