Make synchronization more granular

A previous change-set added some synchronization that used a 
private static variable as the lock; hence all instances of 
the client were blocked when a configuration update happened 
accept for the first client to acquire the lock. This patch 
makes the lock instance level and reduces the amount of code 
that is blocked to the minimum needed. 

Change-Id: I52109dfd5f24fc758d8f3f24a7244c0b5cbbca56
Reviewed-on: http://review.couchbase.org/42819
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>