Generalize EventManager callback types

It is possible to subscribe to events and receive a new, arbitrary
argument in addition to the target. Types are dynamically checked
(slow).
I'm still looking for a static solution.
Better API for events
Simpler EventManager API and code

* You don't need to specify "this" as a parameter when you call
  EventListener::subscribe(...)
* You need to specify your own class when you derive EventListener
  e.g. class A : public EventListener<A> {...}
* EventListener is now a template class.
Cleanup, add indirection if listeners want to queue their events.
s/subscribe/listen; s/target/source
Not used
Improvements to EventManager

* Documentation
* Listeners and Sources can be safely deleted (added destructors)
* `trigger` member methods for sources
* You can unlisten generally, from an event, from a source, or from both
Fix bad merge, add comment.