Continued to implement the protocol on the server side.

Protocol is now implemented up to the point of a participant accepting or
rejecting a challenge, and the manager getting a message for each accept.
Once all participants either accept or reject, the manager decides whether
or not to start the challenge. Participant threads are now synchronized
(theoretically) in these actions.

TODO: this does not yet account for disconnected clients. Also, there is
a problem in sending the challenge description from the server to each
participant.