Add dynamic dispatch for event types

The event dictionary isn't finalized yet and so we'll probably need to
change json schema / signatures. Regardless, this adds in the basic
infrastructure we'll need for dynamic method dispatch.