MB-26021: SingleThreadedRCPtr: implement Swappable concept
MB-26021: SingleThreadedRCPtr: implement Swappable concept

Make SingleThreadedRCPtr support Swappable[1]. This allows std::sort
(and other algorithms to exchange two STRCPtrs without modifying the
refcounts.

Running a benchmark using CompareQueuedItemsBySeqnoAndKey as a
comparator, shows a 8% reduction in runtime:

Before:
    Run on (8 X 2300 MHz CPU s)
    2017-11-29 13:16:39
    --------------------------------------------------------------------------
    Benchmark                                   Time           CPU Iterations
    --------------------------------------------------------------------------
    BM_CompareQueuedItemsBySeqnoAndKey    2625473 ns    2623663 ns        282

After:

    Run on (8 X 2300 MHz CPU s)
    2017-11-29 13:45:51
    --------------------------------------------------------------------------
    Benchmark                                   Time           CPU Iterations
    --------------------------------------------------------------------------
    BM_CompareQueuedItemsBySeqnoAndKey    2418255 ns    2417758 ns        285

[1]: http://en.cppreference.com/w/cpp/concept/Swappable

Change-Id: I582c2b37d32a20516cecb9cc3200e42dbc6c90b4
Reviewed-on: http://review.couchbase.org/86125
Tested-by: Build Bot <80754af91bfb6d1073585b046fe0a474ce868509@couchbase.com>
Reviewed-by: Daniel Owen <b3fc0e1a51f252986e60be7da121b74d3ac6845f@couchbase.com>

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