ReplicatedPG: return error codes for dups from the pg log
This prevents reordering guarded writes or deletes.
Without this, the following sequence:
delete foo -> -ENOENT
write foo -> success
(client connection fails)
resend delete foo -> success, object deleted
resend write foo -> success - dup op, so no write performed
results in the object not existing, instead of containing data. After
this change, both delete and write are detected as dups and the
original ordering is preserved.