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.
Decorators are a way of abstracting out logic from markup. In general you don't want any (or as little as possible) logic in your markup. I'm not familiar with the implementation but ill look into it.