Reimplement winning conditions

Board.hs
* rename lineLength to boardDimensions for more consistent naming
  scheme
* implement firstPlayer constructor to make it possible to start a
  game without knowing the actual implementation of the Player type