Add Event types

Close #39. Close #38. Close #36. Close #35. Close #30. Add event types. Update events to work with event types. Add tests for event types. Update event tests.
Is it ok with you if we mark this as wontfix and open an issue to fix it? It's not related to this PR and this PR just follows the conventions we've been using for awhile