Determines the outcome of the two specified players competing against each other.
player1 - represents the game-logic of a player participating in the game
player2 - represents the game-logic of the other player participating in the game
the outcome of the game from the point-of-view of player1, as implementations of TwoPlayerGame represent zero-sum games then the
corresponding outcome for player2 can be determined by negating this value