MB-7966 KVShard implementation for Multi-readers and writers

        Please read kvshard.hh for details of the new class which
        is a new abstract layer representing a logical group of
        database partitions (vbuckets)

Change-Id: I527b63a2f998020334d0d47dbb8fb3870d8312e6
Add pendingMutation for monitoring incoming mutation requests

This synchronization variable is for better handling of snoozing
and waking up individual flusher based on incoming mutation for
its shard. This avoids waking up and snoozing all the flushers
uniformly based on the global diskQueueSize stat

Change-Id: If469289eb70ee2aba752b7ed6be8385f47e15fce
Add pending request monitor variable, pendingFetch, to BgFetcher

This atomic variable for single BgFetcher instance is for better
handling of synchronizing between sleep and wakeup of individual
BgFetcher instance running for each shard.

Change-Id: I509409c0e701c101ccd817ce2d22c8e8b61a6a11
Do not flush dirty items during disk flush all

When one flusher is resetting database (disk flush) the rest should
skip flushing dirty items and or vbucket deletion and creation as well

Change-Id: Ia0dbaebb9621f0602f2550eca181fdde750b8236
MB-100 increment diskQueueSize before enqueue a dirty item

Change-Id: I2daddb10fa67b70da0807f0f2da9c19f3456bbcd
MB-100 pass COUCHSTORE_OPEN_FLAG_CREATE for couchstore open db api

Current design, and especially when multiple dispatchers are
enabled for a single bucket, does not guarantee that underlying
vbucket files have been already created when initial dirty items
are being persisted to the files.

We need to pass the creation flag when opening a underlying vbucket
file for write. This allows couchstore creates the file if it
has not been created prior to the initial data write. Otherwise,
the persistent write of the requested data could be lost for
unexpected bad state returned from couchstore.

Change-Id: I206d3c9048303ba0efd452d2b7cc945efad61fee
TEMP do not decrement diskQueueSize after requeueing

Mike is going to add this fix separately to 2.0.2 branch.

Change-Id: Ifeee231ba10cffddb649252f3d55751562795087
MB-100 traverse sample items belong to a single shard

This fix may not need after integrating multi-dispatcher implementation
(global io manager). Otherwise, without the fix, the unit test
intermittently runs into time out error for following scenario.

for iteration over vbid = 0 ... vbid = 99
bgfetch for vbid = 0; shard 1/2/3 go to sleep
bgfetch for vbid = 1; shard 0/2/3 go to sleep, wakes up shard 1
bgfetch for vbid = 2; shard 0/1/3 go to sleep, wakes up shard 2
.
.
.
repeating upto vbid = 99, while the single dispatcher interleaving
among 4 individual bgfetch deamon tasks, which further slows down
servicing requested bgfetch jobs

Change-Id: I364eae9e8b3f7aaf9c69b4a148189ea0f289044c