Code Coverage and CallbackStorage

Abstracting out the storage of Callbacks by the Mediator implementation into its own object. We also tied the registering and unregistering of events to this storage object to ensure events registered after Mediator construction are properly storing callbacks.

Added some code coverage across various aspects of the framework and refactored some exceptions to be more specific and less generic. Several new exceptions were added in numerous modules across the framework.