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.
Align the elements of a hash literal if they span more than one line.<br>Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.