Adding support for pipelining of AppendEntries

By pipelining the append entries RPCs we move our bottleneck from network latency to disk and network throughput. In most environments, this should cause a dramatically increased write throughput. We take a very conservative approach by enabling pipelining only in the "happy path", and fall back to our request/response mechanism for the more complex replication situations.