The Event_Dispatcher acts acts as a notification dispatch table.
It is used to notify other objects of interesting things, if
they meet certain criteria. This information is encapsulated
in {@link Event_Notification} objects. Client objects register
themselves with the Event_Dispatcher as observers of specific
notifications posted by other objects. When an event occurs,
an object posts an appropriate notification to the Event_Dispatcher.
The Event_Dispatcher dispatches a message to each
registered observer, passing the notification as the sole argument.
The Event_Dispatcher is actually a combination of three design
patterns: the Singleton, {@link http://c2.com/cgi/wiki?MediatorPattern Mediator},
and Observer patterns. The idea behind Event_Dispatcher is borrowed from
{@link http://developer.apple.com/documentation/Cocoa/Conceptual/Notifications/index.html Apple's Cocoa framework}.