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.
Redundant curly braces around a hash parameter.<br>Line is too long. [95/80]<br>Space inside { missing.<br>Space inside } missing.