Implement MasterElection

If that didn't work, what ensures that we'll try again? We have to come back here (in ```OnProposalUpdate```), but what ensures that this will happen? Because we have an update of our own in flight (so that when it completes, ```OnProposalUpdate```will receive it), I guess? Might be worth a comment, though.