Events in director

Director emits the following events:
 - after visit
 - after update
 - after draw
 - when the projection changes

This is useful to hook code when those event happens.
For example, the correct way to implement the camera is by installing a hook "after update", and not by using the "additional transform".

Since at least 3 events are being emitted per frame, the dispatcher code needs to be improved a little bit to avoid performance issues.