Added the concept of ring and ring neigbors.
two types of neighbors:
1. Neighbors in counter clockwise direction where the state will be backed up explicitly.
2. Neighbors in clockwise direction FOR WHOM THE GIVEN FLAKE SHOULD BACKUP MESSAGES. WE ARE DOING THIS SINCE WE WANT THIS FLAKE TO JOIN THE MULTICAST GROUP HIMSELF. RATHER THAN SOMEONE PUSH MESSAGE TO THIS GUY.

The result of 1. and 2. is that both the state and messages for a flake are backed up on the same backup flakes. Which is what we want.

The disadvantage is that we now have to maintain 2*k neighbors. We need not mention this implementation detail in the paper (i think).

Fixes #38