Add initial stab at EventManager.

Add the initial EventManager and two new interfaces. The first for event
handler registration/unregistration, and the second for event queueing.
The EventManager is currently a singleton to ensure we don't have multiple
managers floating around.