This class facilitates overriding BlocObserver and EventTransformer.
It should be extended by another class in client code with overrides
that construct a custom implementation. The implementation in this class
defaults to the base blocObserver and eventTransformer implementation.
For example:
Signature for the buildWhen function which takes the previous state
and the current state and is responsible for returning a bool which
determines whether to rebuild DataBuilder with the current state.
Signature for the listenWhen function which takes the previous state
and the current state and is responsible for returning a bool which
determines whether or not to call DataWidgetListener of DataListener
with the current state.