Rename EventGenerator trait to something more readable
Complete refactoring of dispatcher

- Ass Dispatcher is a contract

- Add EventDispatcher as a concrete Dispatcher implementation

- Add Event contract, domain events should implement it

- Add container abstraction for resolving classes out of the app
  container

- Config can be osed to swap dispatcher implementation

- Service provider maps Dispatcher to EventDispatcher using the config
  and nothing else
Add EventName trait to fulfill Event contract

Defines a default strategy to automatically return event name
Remove deprecated classes