Added preliminary event support for day stage

* each event is kept in a subclass of `Event`. So far only a partial implementation of `AnimalAttackEvent` is implemented
* events are kept in `event_queue` under each player object
* the events are loaded by `DayStage` at the beginning of the stage
* the stage then calls `next_event` on the players to start the events
* the player then call the `evoke` method on the next event, if any
* the event object sends `display_event` to the client, and wait for the callback
* when the callback is invoked, the event object first handle the consequences of the response, then call `next_event` on the player
* when the player runs out of events, it calls `ready` on the stage

In summary, there are three levels of interaction:
* `DayStage` assigns all the events  to the players at the beginning of the stage
* After that, each player evokes its own events, which calls the player back when a response is received from the client
* When everyone is ready, the stage ends