Modifications to event system to make Events more strict.
After discussions between Luke and me. Events keep track of
the source of the event (responsibility of EventEmitter) and
always have a 'type' attribute that tells the user what kind
of event it is (e.g. mouse_press, key_release, paint, etc.).
Experimental: demonstrating alternative for custom Emitters.
EventEmitters have become a bit more 'heavy' with the previous
changes, with the EmitterGroup doing the heavy lifting. In effect,
creating custom emitters feels a bit clumsy. This commit demonstrates
that custom EventEmitters may not be necessary, but we may introduce
event emitter extensions or something like that.