Changed waitForLeader to just retry, rather than poll. Can be faster in a working test suite.
Significant change: we don't actually serve clients until we are ready, and ready means that a majority of members have acknowledged us as leader. If we did not do this, then clients could get an incorrect view of the cluster (e.g., request a leader who is short lived to perform action, which then gets overwritten by the replacement leader).