Check if the event is defined before calling it

Some entities do not care about basic events. Having to define them just makes
it harder to create new events.
Move onCardPlayed where it belongs and implement afterCardPlayed()
Implement Illidan Stormrage, with tests