A lot of awkward complexity is implemented in OSD to handle PGs that aren't in
pg_map and are in the process of being deleted. This is hard because if the
PG is recreated (or split, or whatever) then we need to stop the deletion and
create a fresh PG referencing the same data.
Instead, leave deleting PGs registered and Stray, with a new peering state
Stray/Deleting. Let them continue to process OSDMaps, splits, peering intervals,
and so on. If they are not fully deleted, they'll go back to Reset -> Stray and
so on and the new primary will get the notify and decide what to do with them
(usually instruct them to delete again).
This (1) streamlines and cleans up the code structure, and also (2) gets rid of
the special purpose RemoveWQ and moves the delete work into the main op_wq
where it can get throttled and so on.