Started this for real

Got the classes working on a basic level, with some unit tests.

Still some ugly hacks that should be replaced for clarity, such as the
ambiguity on the GameData constructor's argument type.