this is a patch that addresses the newleader logging issue, and brings the implementation in line with the theoretically proven protocol.
there is a problem with hierarchal quorums that i haven't looked at. the backwards compatibility code is in, but i haven't tested it. i'm still trying to make leader election mod in a backward compatible way.
the code LearnerHandler code is pretty messy now and i'm torn between cleaning it up or leaving until later. my concerns about cleaning is that 1) it may be hard to compare past logic with current if we need to in the near future and 2) it may introduce new bugs. on the pro side, it is crying out for the code cleanup, and this is usually when we do it.