Implement MasterElection

I think you're probably right, but the code below is definitely intended to reach the same conclusion since it's based on the *published* backing info (so we'll have to wait for our own update to arrive), but it seems safer to bail here when we already know what the answer is (there could be a bug etc.), and we *have* to come back through this callback again in the near future for the update we just caused (or the one which was already in-flight.)