MB-9785: Allow the checkpoint manager to work with upr streams

This is a large change that does a few things other than just
allowing a stream to access the checkpoint manager. The main
feature of this change is that the Stream class is now a state
machine that contains states for pending, backfilling, in-memory,
and dead and the stream moves through these states based on how
far behind or up to date the mutations being sent from the stream
are. The Stream class also becomes the main place for handling
mutations in an UPR connection.

Change-Id: I4f5d6a49e31e992bd34b2bce5d8089ccbaffb1f4
Remove backfill callbacks from the ConnMap class

UPR will have it's own seperate backfilling code so we no longer
need to use the callbacks that Tap conenctions use when they do
backfill. Having our own UPR backfilling logic should also lower
lock contention since we will lock based on the Stream as opposed
to the Connection.

Change-Id: I6786b0f1397d94b6ed126a7b62afb30eaceae53a
Don't assign checkpoint start/end/dummy items a by sequence number

Assigning checkpoint meta items sequence numbers can make consumers
think that more items have been added to a vbucket when no new items
have actually been added. This change also makes it easier to predict
the high sequence number when inserting a given amount of items into
a vbucket.

Change-Id: Ib374ccda99179b93c80bdd8d36cdfb4bf0caaf4e
MB-9821: Add takeover stream logic

The change adds two more states to the producer stream state
machine to allow a producer to properly hand off a vbucket to
another node.

Change-Id: Ia7925442b9f8cb984639b331ae642d90c9ef94a0
Make sure consumer stream request response is a valid consumer

Change-Id: Ibb8be9d4a5cf6d8990fa1beeb9733feb33a6a0ab
Only add a failover log if the stream was succesfully created

Calling the failover callback can actually cause two responses to be
sent in the case of stream request failure. This can cause clients
to become confused and drop connections.

Change-Id: Ibe1b7116b0424c048144682ebe43a3f204e6e4be
Add warning level log messages whenever there is an upr disconnect

This was requested by people that are developing upr consumers and
will greatly help diagnose why a connection is dropped unexpectedly.

Change-Id: I76b1509de1b4ee3b43d060ded4cf18a10ded3109
Add sanity checks for start/end seqno's when doing a stream request

Return an ERANGE error if the start and end sequence numbers do not
make sense for a given request.

Change-Id: I9859defd587b748a17175b95e66a20adcac65eca
Add stream stats for items read from disk/memory

Change-Id: Ic584fe3bdff2121e0cf8e6f2181d8d0908d6c3ee