#130 Protect Grid Access

GameController to control access to Grid.

Grid can only be modified when GameController.acquireGrid() is called, which returns an AutoClosable buffer.  On closing of the buffer, the grid is flushed back to the GameController.

A copy of the Grid can be acquired with GameController.getGridCopy() which does not return the Grid in a buffer, but it will wait for any existing buffer to close.

Only one buffer can be open at a time, and a copy cannot be acquired while a buffer is open.