Move the bulk of MazeCompiler into engine.

This is to support two future features:
- Basic level tweaking from the client itself (via the console).
- Ability for HoverCAD to compile tracks without relying on a separate
executable.
Properly link MazeCompiler bits into engine.
Rename MazeCompiler::Parser to TrackSpecParser.

This is to make it clear that it's parsing the track "spec" format (the
text-only format that HoverCAD produces for MazeCompiler to consume).