Updated API with observer style events

Provides new possibilities to event consumers for managing subscriptions
Potential to leverage event namespaces
Fills current gap of lack of support for multiple subscribers
Less prone to breaking compatibility should event definitions change over time