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.
Also, maybe adding a bit of info why does Replica does so much might be cool. Was this because of the library programmer convenience, api client convenience or is this cut done because of some higher, architectural level reasons ?