Problem: we sometimes publish consensus events when we shouldn't
Sometimes when consensus events are slow to come from relays we start building a new consensus leaf node when a better one already exists but we just don't know about it.
I think simplest way to deal with this is to classify consensus events into RAW (we haven't seen a consensus event for this event height yet and are creating a new lead node in the consensus tree) and ACK (we have seen a consensus event and agree with it).
We should only produce RAW events when we are at the current Bitcoin tip. In the case of a stalled network, we can manually set a flag to produce RAW events when we aren't at the Bitcoin tip so that we can catch up to it.