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.
Since this is a string interpolation I would say no spaces before and after the {}. But maybe im reading the style guide wrong.
https://github.com/bbatsov/ruby-style-guide#spaces-operators