||A game object is responsible for keeping track of the exact state of the game,
for updating the state of the game once both players have reported their moves,
and for making callbacks to the GameServer once both player moves have been
reported and the game advances to a new move.
||The GameProxy class is a remote object that is called on locally by a Player
object, and remotely by the GameServer.
||The GameServer class is somewhat of a wrapper class for the Game class.
||An object encapsulating the state of the game at the beginning of a game move.
||A class encapsulating a player move during the game.
||The Player class encodes an AI opponent for the game.