Represents a player in a zero-sum (2-player) game,
where the game is impartial. That is,
the only difference between players is who goes first,
and the only thing that defines a game is its ‘state’:
both players need to have the same winning criteria for this player to be used.
Represents a player in a zero-sum (2-player) game,
where the game is partizan. That is,
a player can affect the Game::possible_moves function,
or players have different winning outcomes.