Removed mkLog, as each log implementation may require its own factory design...and nothing about the algorithm really depends on a specific definition of a factory.
Just reordering definitions for readability
Removed RaftServer, so instead of 3 layers of data structures, now there are 2 (RaftContext, RaftState).
Small cleanup in unit test: use allLeaders when possible.
Removing RaftState from signature of withConsensus