BoardOperator and Board finish splitting up.

Board is now a simple holder of the costs per cell, and what cells are
obstacles or exits. It also has methods that look at the immediate
neighbors of a cell.
BoardOperator has the logic to recompute costs globally across the board
when exits or obstacles are added or removed.