MB-12179: Allow backfills to be intervleaved

Provides the structure to pause and resume backfills.

Change-Id: I96df9076885878eea46eff32213b871c7ba3e61d
Reviewed-on: http://review.couchbase.org/42315
Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com>
Tested-by: Michael Wiederhold <mike@couchbase.com>
MB-12179: Pause backfills when after 'x' of items or bytes are read

All dcp backfills are will be paused after reading 4MB or 4096 items
and if any other backfills are scheduled then those will be run before
the original backfill is run again. This change allows us to interleave
backfills so that we no longer have to run a backfill for a single
vbucket to completion before starting the next one.

Change-Id: Ibdb455a5bd931e0276dad61d686f9dbf507ed7af
Reviewed-on: http://review.couchbase.org/42316
Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com>
Tested-by: Michael Wiederhold <mike@couchbase.com>
MB-12179: Add initial max buffer to the BackfillManager

The backfill manager will only allow up to 20MB to be backfilled
from disk without being sent over the wire to the consumer. This
change will help to prevent growing memory usage from backfills
when a vbucket has a large dataset.

Change-Id: Ie505f2a77d0f0fe56a1b63f9a57edc6c11a11780
Reviewed-on: http://review.couchbase.org/42319
Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com>
Tested-by: Michael Wiederhold <mike@couchbase.com>