Added the ClientThreadsRespecter sync primitive.

I still think that starting refcount from 1 is cleaner. no need to conditionally lock the mutex -> no crazy locking / unlocking if you have one temporary subscriber. consider the following code:
```c++
ClientThreadsRespecter foo;
while (true){
   foo.RunClientCode(boo); // you lock/unlock mutex every time!
}
```