Only remove client after the hardware is teared down, so a new client
is rejected before old client is done.

Also check mUsers in all cases to make sure there are no existing client.
diff --git a/camera/libcameraservice/CameraService.h b/camera/libcameraservice/CameraService.h
index 729e539..8b8b54c 100644
--- a/camera/libcameraservice/CameraService.h
+++ b/camera/libcameraservice/CameraService.h
@@ -199,7 +199,7 @@
     virtual     void                        incUsers();
     virtual     void                        decUsers();
 
-    mutable     Mutex                       mLock;
+    mutable     Mutex                       mServiceLock;
                 wp<Client>                  mClient;
 
 #if DEBUG_HEAP_LEAKS