osd_internals/snaps.rst: add a description of snaps and trimming

Signed-off-by: Samuel Just <sam.just@inktank.com>
osd_internals/snaps.rst: update description to reflect SnapMapper

Signed-off-by: Samuel Just <sam.just@inktank.com>
ObjectStore: move queue_transaction into ObjectStore

Signed-off-by: Samuel Just <sam.just@inktank.com>
Context: allow C_Contexts to not have a cct, add list_to_context

Signed-off-by: Samuel Just <sam.just@inktank.com>
ObjectStore: add Context management to Transaction

ObjectStore now appends passed contexts in queue_transaction
to the Transaction contexts and uses that to pass into
the virtual queue_transactions.

Signed-off-by: Samuel Just <sam.just@inktank.com>
DBObjectMap, hobject: move hobject->str methods to hobject

Signed-off-by: Samuel Just <sam.just@inktank.com>
common/shared_ptr.hpp: add get_next and expose VPtr and WeakVPtr types

Signed-off-by: Samuel Just <sam.just@inktank.com>
common/: add map_cacher

Signed-off-by: Samuel Just <sam.just@inktank.com>
osd/: add SnapMapper

Signed-off-by: Samuel Just <sam.just@inktank.com>
test/: add tests for map_cacher

Signed-off-by: Samuel Just <sam.just@inktank.com>
SnapMapper: add adapter for ObjectStore

Signed-off-by: Samuel Just <sam.just@inktank.com>
Makefile: add SnapMapper to osd

Signed-off-by: Samuel Just <sam.just@inktank.com>
SnapMapper: add remove_oid and get_snaps

Signed-off-by: Samuel Just <sam.just@inktank.com>
test_snap_mapper: add tests for remove_oid and check_oid

Signed-off-by: Samuel Just <sam.just@inktank.com>
osd/: Integrate SnapMapper with OSD

- SnapTrimmer now uses SnapMapper to get the next object to trim
- Entries for a snap are implicitely removed from SnapMapper when
the last object is trimmed, so no need for the adjust_local_snaps
logic.
- Scrub now compares the object_info snaps set on the object attr
with the version stored in the SnapMapper.

Signed-off-by: Samuel Just <sam.just@inktank.com>