Multi-node replication test, plus various nits

This PR adds a new integration test (~ 2 seconds running time) that starts a single quorum composed of three cooperating general replication services, and verifies they are able to elect a leader, and then replicate data submitted to that leader.

It also tweaks the GeneralizedReplicator interface so that a sequence number may be returned by the implementation sooner than the commit. (This is a feature necessary, for example, if implementing a distributed log that wants to return a sequence number from an append call, rather than from the following sync call.)

Finally, it fixes various nits in ReplicatorService and BeaconService, especially related to exception reporting and logging.