Implement MasterElection

I'd like it if this was checking on something that's set late in the process, so that we never destroy this too soon? Say, ```CHECK_EQ(proposal_state_, NONE)```?