Implement barrier in parallel manager (#3469)
Implement barrier in parallel manager (#3469)

Mirroring watch supports parallel manager to run actions of the received
events in parallel, but sometimes the order of the execution of those
actions matter.

For example:
- A new bucket is created
- A new file is uploaded in the new bucket

This PR will bring support of the barrier concept. A task with a barrier
will only executed after all the previous tasks finish, the
subsequent tasks will also be only executed when the barrier task is
finished.

Later, we will bring support of tasks dependency to optimize the
parallelism.
balamurugana/mc,vadmeste/mc,minio/mc,balamurugana/mc,krisis/mc,krisis/mc,minio/mc,vadmeste/mc