MB-9974: Deal with several snaphots

When requesting mutation from UPR via a stream request, the response
can consist of several snapshots. This is oppose to how the by-seq tree
in couchdb/couchstore works.

In the couchdb/couchstore by-seq tree you guarantee that when you start
requesting from any sequence number to the most current one, you will
see every document at most once.

The same guarantee holds true for a single snapshot within an UPR stream
request response. The problem is that such a response might contain
several snapshots.

In order to keep the changes within the view engine to a minimal, there
will de-duplication happening in case there are several snapshots in the
UPR stream request response. The document loader will put the items into
a list, before they end in the mapping queue. In case as second snapshot
is received (which is determined by a snapshot marker) the items in this
list will be replaced with the version of the snapshot that is currently
processed. This way the mapping queue will contain every document at most
once, which is the same guarantee as the by-seq tree gives. Henve the
rest of the code can stay the same.

Change-Id: I43b5defa57759f2ab85c79ceb13ceafdb4a9fa08
Reviewed-on: http://review.couchbase.org/33749
Reviewed-by: Volker Mische <volker.mische@gmail.com>
Tested-by: buildbot <build@couchbase.com>