Added EndGameEvent and updated EventFactory
Added a local call to AbstractEngine

startGame used to generate two events. On of them was a turn start event.
Since the turnStart method already throws such an event it makes sense to
call that method instead. This is behavior is also required for by extending
classes.
Added an overloaded constructor to Log

A Log can now be created with a List of events.
Improved Monitor, Setup, Play "package"

Monitor:
- Now generates start game events (instead of Play.playGame)

Setup:
- Shuts down when a Player stops generating events (runs dry).
- Forwards all events to the opponent.
- Added some timeouts and changed the meaning of others:
  - There are now three different timeouts.
  - A global timeout puts a total upper bound on how long setup can
    take to complete.
  - An inactivity timeout puts a limit on how long setup will wait
    for any player to generate events.
  - A refresh timeout specifies the speed with which setup cycles
    between players when trying to fetch events.
- Added and renamed methods for setting timeouts.
- Renamed isReady to completed.

Play:
- No longer starts the game. Play assumes that the game has been started
  already once playGame is called.
- Fixed a bug. Due to the order in which events were sent to the engine
  and the opponent, "done" messages were "forwarded" back to the sender.

Added and updated the corresponding tests.
Agent interface and RandomAgent implementation

Agent is a preliminary interface. RandomAgent is a quick and dirty
prototype implementation. Both will likely be replaced.
Added ClientSetup

ClientSetup is a temporary scaled-down version of Setup. Some future
refactoring will probably result in some sort of unified design for
both. In the meantime, ClientSetup is more suitable for use by clients
while Setup will be used by the Monitor.
Added a small DebuggingClient

This is a very small and kind of neat tool. It knows nothing about
the foxgame and allows the user to perform all communication manually by
entering the commands at the terminal.
Added RandomClient

This client will connect to a monitor and generate moves using the
RandomAgent. Two RandomClients can play against each other through a monitor.
Commenting and cleanup