Event effects

This pull request implements the foundation for the event effect system (it doesn't yet implement the actual effects though)

Take a look when you can @indycrisp