Class Diplomacy

Diplomacy class
handles diplomacy between players
two players can be allies, neutral or enemies
allies: set of (a, b) tuples of player instances meaning a and b are allies
for making the relationship symmetrical a has a lower worldid than b
enemies: set of (a, b) tuples of player instances meaning a and b are enemies
if to players are not allies nore enemies, they are neutral
for listeners that are not Callback instances, the arguments must be:
caller, old_state, new_state, a, b
old_state and new_state are a strings that can be 'ally', 'neutral' or 'enemy'
a is first player
b is second player