WIP: Use a state machine to implement the parser

Instead of using multiple passes over the input file, a state machine is
now used to parse the input game file in one pass. The original Model
has also been decomposed into multiple files to make it more manageable.

This is still work in progress.