Done.

Commits past this one will be bug fixes I encounter as I develop a game,
or small features that will prove to be necesary from experience.