Now, instead of using a callback-based Network module, we're using MVars
to synchronize the callbacks and make our Network module blocking functions.

This allows for an easier-to-use API, where we have an quorumAccept and a
quorumConnect function, both blocking, and both returning just a single
socket upon succesful completion.