ReplicatedPG: split send_push into build_push_op and send_push_op

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: pass a PushOp into handle_pull_response

This is the first step toward packaging multiple
pushes/pulls into a single message.

Signed-off-by: Samuel Just <sam.just@inktank.com>
OSD: convert handle_push to use PushOp

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: send pushes en mass in recover_replicas, recover_backfill

This way, the pushes might be later merged into a smaller number of
messages.

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: send pulls en masse in recover_primary

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: split handle_push_reply out of sub_op_push_reply

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: split handle_pull out of sub_op_pull

Signed-off-by: Samuel Just <sam.just@inktank.com>
messages/,osd_types: add messages for Push, PushReply, Pull

Signed-off-by: Samuel Just <sam.just@inktank.com>
OSD: add handlers for MOSDPG(Push|PushReply|Pull)

MOSDPG(Push|PushReply|Pull|SubOp|SubOpReply) need the
same thing checked prior to queueing the op, so they
share a templated handler.

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: add handlers for MOSDPG(Push|Pull|PushReply)

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: send compound messages to enlightened peers

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