Add Synchronizing Counters

This adds another counter, based on atomics. It allows to block a thread until the counter reaches zero again, without having any upper bound. Furthermore I refactored the `BlockingCounter`, that is now based on this new `SynchronizingCounter`.

Unittests included...