Add caching for gameNode.board()
Use deepcopy on cached boards