Smooth synchronization

Fixed up synchronization and quorum joining so that the process should be smooth, even at the edge cases.

This isn't tested because the api call for 'join quorum' isn't implemented yet.

I also applied a good amount of energy to updating the way mutexes work in the participant.
-_- a high-level description of `tick()` would still be nice.