Praefect: Collapse duplicate replication jobs
Most of the replication jobs created for updating the repo
with the latest changes. There could be a lot of events in
the queue for updating the same repository with the latest
changes.
Once the first event is completed there is no
sense in applying of all the other events as the repository
is up to date.
As an improvement we mark all the same jobs
(the jobs are equal) as 'completed', so they won't be consumed
for the processing.
Now we only need to dequeue the oldest events with only
distinct replication jobs.
Closes: #2438 (closed)