This is an intermediate patch for moving the notification/eventing from the backend into the individual stages.
For now, the simplest approach, to put us on the right path, is to use the Backend::addEventListener to register
listeners for all stages. In the future a listener will be able to listen for events from a particular stage.
For now, we still need to maintain a list of listeners in the backend to handle events from MCA components that are not
yet stages, and to handle the cycleBegin and cycleEnd events. With this in place we can start to remove the Owner
pointers from stages that use the Owner for event dispatch. Stages should start to handle that now.
When we get stages for all of the components in MCA, this will become a unique_ptr<Stage> and we can remove the explicit references to Fetch, Dispatch above. A pipeline should operates as a composable sequence of stages.