Added simple event bus impl
Separated out event handling DSL into its own mixin