Fix terrible square setup algorithm

The algorithm for initialising unoccupied/unreachable squares was
totally wrong.  Fixed, and with better tests.  Some work in progress on
game move tests.