play method
Plays a move and returns the updated Position.
Throws a PlayException if the move is not legal.
Implementation
Position play(Move move) {
if (isLegal(move)) {
return playUnchecked(move);
} else {
throw PlayException('Invalid move $move on position $fen');
}
}