Put in library form

OK, this is roughly what I want the end result to look like: an embeddable library that gives membership updates and also provides a distributed state machine.  Underneath, it uses MultiPaxos to guarantee progress while being resilient to loss of any node and to partitions.

This is still pretty rough in a number of ways, not least of which it's 868 lines.  But I don't want to put time into cleanup until I figure out where this is going: what will readers get from this chapter?  I began this project with a pretty basic idea - "these consensus algorithms seem cool - I'll try implementing one".  Some ideas of focus for the chapter (without exclusion):
 * Consensus and distributed state machines
 * Paxos, MultiPaxos, and why the literature pretty much agrees it's *hard*
 * Protocol development process - using a deterministic network to reproduce problems, extensive logging, error injection, exploratory development, etc.
 * Testing (not that I've done much of it, but I could simplify the protocol quite a bit, remove a lot of the practicalities, and add tests)

Note that this pull req includes the commits from #35; only the last three are new.