public static CompletionWaiter createAndInitialize(Curator curator, Path barrierPath, String id, Duration waitForAll) {
        // Note: Should be done atomically, but unable to that when path may not exist before delete
        // and create should be able to create any missing parent paths
        curator.delete(barrierPath);
        curator.create(barrierPath);

        return new CuratorCompletionWaiter(curator, barrierPath, id, Clock.systemUTC(), waitForAll);
    }
Implementation of a Barrier that handles the case where more than number of members can call synchronize.
Will wait for some time for all servers to do the operation, but will accept the majority of servers to have
done the operation if it takes longer than a specified amount of time.

@author Vegard Havdal
@author Ulf Lilleengen
zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java