osd/ReplicatedPG: do watch effects only when change commits
Do not tell the client their watch succeeded until it is durable and
visible to clients doing a notify. This is less important in the initial
watch registration stage, but critical in the disconnect (and disconnect
+ reconnect) pipelining cases.
Simplify the watch_disconnects struct to have exactly the information
we need, and no more. Note that the conn is not needed for disconnects
(and we don't have a req to provide one in the watch timeout op case).