Moved Piece methods into Board.
Piece.hasMoved no longer has a default argument.
The logic in the Move objects and classes has been pulled into the Board class. Board.move now takes a Move* instead of a Either[Move, Side => Move]. The change removes the need for a number of implicit conversions.