Changed event hook to an enum that manages a collection of event handlers.
There are now global event delgators for each event type. If a component
is interested in being notified of an event they should register a handler
with that event.
one of the motivations of implementing the EventHook in this way is that we
needed to handle modifying line numbers to be one based (and the RETURN type
ine number for ruby needs to be offset by 2). If these rules ever change we
can change them here.