Woo, off by one bugs.
Lots of refactoring.

Tile evaluation order now matches ZZT more closely (by way of
the Roton library).

Board is just a collection of tiles, and the various tile types are
now class data, instead of instance data.

Some regressions: I haven't updated item pickup code, and you can't
move between boards anymore.