MutationLog: Perf: Don't initialise buffers until needed
MutationLog: Perf: Don't initialise buffers until needed

Optimize the construction of MutationLog::iterator to not create the
buffer objects until they are actually used. In the case of an end()
iterator; we were pointlessly creating (and initializing) buffers
which were never used.

In Debug build types, this significantly reduces the runtime of the
DurabilityWarmupTests:

Before:

    [----------] 1 test from FullOrValue/DurabilityWarmupTest
    [ RUN      ] FullOrValue/DurabilityWarmupTest.ReplicaCommittedAndPendingSyncDelete/persistent_value_only
    [       OK ] FullOrValue/DurabilityWarmupTest.ReplicaCommittedAndPendingSyncDelete/persistent_value_only (2370 ms)
    [----------] 1 test from FullOrValue/DurabilityWarmupTest (2370 ms total)

After:

    [----------] 1 test from FullOrValue/DurabilityWarmupTest
    [ RUN      ] FullOrValue/DurabilityWarmupTest.ReplicaCommittedAndPendingSyncDelete/persistent_value_only
    [       OK ] FullOrValue/DurabilityWarmupTest.ReplicaCommittedAndPendingSyncDelete/persistent_value_only (122 ms)
    [----------] 1 test from FullOrValue/DurabilityWarmupTest (122 ms total)

Change-Id: Ie62c72d8d1613ea069d377e071740fcabfddffcb
Reviewed-on: http://review.couchbase.org/113379
Tested-by: Build Bot <80754af91bfb6d1073585b046fe0a474ce868509@couchbase.com>
Reviewed-by: Jim Walker <1cd02e31b43620d7c664e038ca42a060d61727b9@couchbase.com>

daverigby/kv_engine,daverigby/kv_engine,daverigby/kv_engine,daverigby/kv_engine