Implements PgnParser with parsePgn(), parseAlgebraicMove(), and move
resolution using geometric piece reachability with disambiguation support
for piece type, file, and rank hints.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Implements parseFen() in FenParser and gameStateToFen() in FenExporter,
covering all 6 FEN fields (piece placement, active color, castling,
en passant, half-move clock, full-move number).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements FenParser.parseBoard() to parse FEN piece-placement strings
into a Board, with proper None propagation on invalid input.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>