Test and action classes now derive from minimal base classes

This makes unit testing simpler by letting us add only the tests and
actions we need.

We can now optionally pass in custom test and action classes when
initing the main object.

Also removed the automatic start_game() call from the main class init,
in case we need to make any changes to the object before starting the
game.
Add gamedata validation for starting room; rename gamedata error

If <>1 room specified with attribute 'start' = true, throw an error.