Big refactor of Board.movePiece()