MB-10496: pause/resume visitor support for epStore & HashTable

Add new visiting methods to HashTable and EventuallyPersistentStore to
allow a client to pause the visit at a particular position, and then
resume from approximately the same position at a later time.

The methods operate in a similar way to the existing visit() /
visitDepth() methods, with the addition of a start_pos parameter to
specify where to start at, and returning the position the visitation
got to.

Clients would typically call pauseResumeVisit() with a default
Position initially (to start from the beginning), and then when they
want to pause they return false from their visit() method.

Change-Id: Id4163106a836d0cc48f3724a3bfaa6b7f2993240
MB-10496: Use pause/resume visitor for defragmenter task

Expand the defragmenter to make use of the pause/resume visitor
methods on epStore & HashTable. This allows it to run for a
constrained period of time, pausing (and recording how far it got) if
it reaches its time limit. It can then resume from where it left off
at the next defragmentation internatl.

Change-Id: I2542efc165e3200f0cc74d8120a16e2175f1341d