ChessBase compatible FEN handling

 * Allow 0 as ply but normalize to 1
 * Use more descriptive exceptions
Cache board during export
Cache board during PGN parsing