User:T. Canens/flex barrier

Intended behavior is:
 * The completion phase is always executed, even when every participating thread calls.
 * If in such a case the completion phase returns a positive number, the barrier can be reused.
 * If it returns, the barrier can only be destroyed.


 * A thread that called cannot rejoin the set of participating threads, even if the completion phase returned a positive number (and so the set becomes a new set).