ReplicatedPG: RWTracker: always set backfill_waiting_on_read=true

Setting it true even if we aren't actually waiting doesn't break
anything else happening, and lets us assert
1) that we're the only doing grabbing the recovery lock,
2) that we have actually taken a recovery lock when dropping one.
(We aren't always doing so now, so this should simplify debugging.)

Signed-off-by: Greg Farnum <greg@inktank.com>
ReplicatedPG: take recovery locks in recover_primary()

This was causing tons of crashes

Signed-off-by: Greg Farnum <greg@inktank.com>
ReplicatedPG: take recovery locks in wait_for_missing_object()

Need them here too.

Signed-off-by: Greg Farnum <greg@inktank.com>
fixup "fixup ReplicatedPG: get backfill read in prep_object_replica_pushes()"
ReplicatedPG: add a cookie to get_backfill_read() to identify requester

This way we can tell if we're getting clashing lock requesters, or if
the repeat is appropriate.

Signed-off-by: Greg Farnum <greg@inktank.com>