ReplicatedPG: handle removing the old object in finish_copy_op

do_osd_ops will need to either copy the old version out of the
way or simply delete it depending on mod_desc.  Thus, defer
handling filling that part in until we finish the copy op.

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG::finish_copyfrom: check new_obs.exists, not obs.exists

If the transaction previously removed the object, the stat update
will have already happened.

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: fill in mod_desc in finish_copyfrom

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: use append for write and writefull

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: fill in mod_desc for hitset repops

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG::_process_copy_chunk: use append

Signed-off-by: Samuel Just <sam.just@inktank.com>
common/hobject: print shard as unsigned, not as char

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: fill in ctx->obc in simple_repop_create

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: only advance last_backfill to head objects

If we rollback the log entries which created the clone at
last_backfill, it won't get rerun on the replica.  Instead,
only advance last_backfill when we hit head (or snapdir).

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG::trim_object: remove unused int r; declaration

Signed-off-by: Samuel Just <sam.just@inktank.com>
RadosModel: undirty with update_object_undirty

Otherwise it doesn't behave properly with snapshots since
update_object_version doesn't add another snapshot entry.

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