Multiple changes:

Used Chess::Pgn & Chess::Rep for FEN from PGN
Captured and use move form field
Passd reverse & forward to and from the template
Created _fen_from_pgn()