Context: add GenContext templated on the callback argument

Signed-off-by: Samuel Just <sam.just@inktank.com>
WorkQueue: add a workqueue which simply runs queued GenContexts

Signed-off-by: Samuel Just <sam.just@inktank.com>
FileStore: ping tphandle between each operation within a transaction

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: send_push is unused

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: Allow get_object_context caller to provide attributes

This will be used by PGBackend implementers to get the SnapSet
and ObjectInfo for newly recovered objects on the primary.

Signed-off-by: Samuel Just <sam.just@inktank.com>
osd/: add PGBackend interfaces and stubs

Signed-off-by: Samuel Just <sam.just@inktank.com>
OSD,ReplicatedPG: let PGBackend handle the temp collection

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: pass on dump_recovery_info to PGBackend

Signed-off-by: Samuel Just <sam.just@inktank.com>
PG,ReplicatedPG: handle do_request in ReplicatedPG,PGBackend

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: extract PGBackend::Listener recovery callbacks

Signed-off-by: Samuel Just <sam.just@inktank.com>
osd/: allow dout for ReplicatedBackend methods to work in ReplicatedPG.cc

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG/Backend: shuffle sub_op_push over to ReplicatedBackend

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG/Backend: shuffle sub_op_push_reply

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: make log_subop_stats static

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG/Backend: convert sub_op_pull

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG/Backend: move _do_push,_do_pull_response,do_push

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG/Backend: shuffle do_pull/do_push_reply

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG/Backend: move handle_*

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG/Backend: move over _failed_push

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG/Backend: move over send_pushes/send_pulls/prep_push_op_blank

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