Added the ClientThreadsRespecter sync primitive.

I don't think it would work as simply.
The { { increment / decrement } + comparison } statements can be combined into one, but what about the constructor and destructor of ```Client```?
```
--parent_->ref_count_;
if (!parent_->ref_count_) {
    parent_->ref_count_is_zero_mutex_.unlock();
}
```
The way I see it, the operations on the counter and count_is_zero_mutex_ should the coupled and guarded together.