MB-10496: Initial skeleton of HashTable defragmenter

Create a new Defragmenter task, which visits all members of the
HashTable and defragments them. Currently the defragmentation
algorithm is very naive - it simply reallocates all Blob objects
encountered, regardless of how fragmented or not the pages they reside
on. This is obviously very wasteful (as we will move object in both
fragmented and not fragmented pages on each pass), but however is
sufficient to significantly reduce RSS of the memcached process, if
jemalloc is used as the memory allocator.

jemalloc is required as it prefers low addresses during re-use;
and so the act of allocating a new Blob object, copying the old to the
new and then free()ing the old Blob will result in the new objects
being packed with other objects in the same size class.

To obtain this behaviour, we need to disable jemalloc's thread cache
for the thread which is performning the defragmentation, for the
duration of that task, and hence this requires the use of new
functions from the allocator hooks API.

Change-Id: I8f0e8daaa5e5d7ea8fde58f1c8377bf30312c85a
Defragmenter: Implement run_defragmenter_task for ep_engine

Change-Id: Ieaeadfbd4186213e35a1e89bc0202d39ff27ab96
MB-10496: Unit test for degragmenter task

Basic smoketest for the defragmenter: Create a number of documents,
spanning at least two or more pages, then delete most (but not all) of
them - crucially ensure that one document from each page is still
present. This will result in the rest of that page being
'wasted'. Then verify that after defragmentation the actual memory
usage drops down to (close to) mem_used.

Change-Id: Ibfe8780fb02ad5eb504242b01e7583bc1e305184
Add LongTermStorage class, use for Blob objects

This makes use of the new memory allocator hooks to allocate certain
objects which are expected to be long-lived in their own region of
memory. Initally this is just used for Blob objects - i.e. document
bodies held in RAM.

Change-Id: Ia8950d153a296feb29e7d66dc8c3b3d089d089be
Add epoch field to Blob; use as part of defragmenter policy

When a Blob object is allocated record the current 'epoch' in it -
essentially how the number of defragmenter passes which have occurred
mod 256. This can then be used to determine the age of a blob, and
consequently can be used by the defragmenter to select Blob objects
which have been in existance (and haven't changed size) for a long
period, and hence are candiates for defragmentation.

Change-Id: I6380e6601ae5ee86ca630031e4edea9711a88433
DEBUG: Record how many documents were skipped by defragger due to being too young.

Change-Id: Ice8a8b17ee4c56bc0e53eba394296c4f6501f5ee
Remove expensive cb_assert() calls in HashTable::visit()

Change-Id: I8335f44f9f3aed863abb99082e9a12a56173f549
Revert "Remove expensive cb_assert() calls in HashTable::visit()"

This reverts commit 972bf77d0be5db4cd1bf5708372ebde9ab5dcdc4.
Defragmenter: Change DEFAULT_AGE_THRESHOLD to 10

Change-Id: Ica42a53feaaf3e25e1e4f34b3e47eb0b5f4b7582