First draft of cluster chapter

I'm reasonably happy with the shape and content of the chapter here, so I think it's ready for a review.

The code is mostly in place, although there are a number of "TODO" tags that I'm still pondering.  The big one -- that affects the chapter -- is to remove the 'catchup' support entirely.  I can't quite convince myself that the implementation will still perform correctly without it, though.
Someone unfamilliar with the distributed systems might have trouble making the connection between the local state and the causes of the problems above. Maybe add some example of global state usage vs local state usage and how these affect the failure modes ?