Defragmenter performance test

Create a new ep-engine unit test to measure the speed of the
defragmenter.

Change-Id: I809a24906596ee521402f41c68605531a3301e8e
Reviewed-on: http://review.couchbase.org/44286
Reviewed-by: Jim Walker <jim@couchbase.com>
Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>
Tested-by: Dave Rigby <daver@couchbase.com>
Defragmenter: Reduce usage of gethrtime()

The defragmenter task calls gethrtime() after each visit to check if
it has yet reached the time limit for a chunk of
defragmentation. However, gethrtime() can be an expensive call,
especially in virtualized environments.

Add a ProgressTracker class to the Defragmenter, which monitors the
rate at which the defragmenter is visiting items and hence only makes
call to gethrtime() occasionally. This increases the rate at which
items can be visited - on AWS (c3.4xl) increases the visted rate from
3.3M items/sec to 5.6M items/sec.

Change-Id: Icbde89236cf358693ff14857b77f6eaf83119e28
Reviewed-on: http://review.couchbase.org/44354
Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>
Tested-by: Dave Rigby <daver@couchbase.com>