Terrain and blocks

Implement terrainFunction and findChar for terrain querying, and
startBlock, isStanding and isLegal for Block querying.
Everybody needs good neighbours

Calculate list of neighbours, and work out which are legal moves.