MB-9107: During Backfill don't read resident values off disk

We remove in-memroy backfilling in a previous commit and this
can cause backfilling to be slow if most of the items are in
memory. This change allows us to skip reading values off of disk
if the values already exist in memory.

Change-Id: I51aad158e9bab15cc8fb78f3c140c1d87c224101
Reviewed-on: http://review.couchbase.org/29115
Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com>
Tested-by: Michael Wiederhold <mike@couchbase.com>
Fix race in warmup completion

This change fixes a race in warmup completion that is cause when
a warmup thread is finishing and another thread tries to stop
warmup. This behavior can cause two stats snapshot tasks to be
scheduled and since we only keep a task id for one of the warmup
tasks it is impossible to cancel the second one that was scheduled.

This cahnge also refactors the warmupCompletion variable so that
it can be kept in the warmup class.

Change-Id: If01929dfe35c03f12e466f3099298339c9a66960