Add caching for pgn.board()