Split controller behavior into a separate class from the display. This
allows the controller to be customized for different game types. Also,
the display is changed so that the code does less of the board logic and
simply displays the board.