Make public fields in Board, Row, BoardCoordinate private.

+ Convert public fields in Board, Row, BoardCoordinate objects
  to private fields with getter methods.
+ Lock down fields across objects: mutable fields are final
  where applicable.
+ Replace methods that mutate Board and Row with methods that
  return new objects.
+ Split Board.hasWin() into two methods: Board.hasWin() and
  Board.getWinningRow(). Method used to return Row object or
  null.
+ Replace access to object fields with calls to getter methods.