Fix the race condition when the ZKWrapperService.stop() is called right after it started. Details of the DEADLOCK:

Found one Java-level deadlock:
=============================
" STOPPING":
  waiting to lock monitor 0x00007fc1b8004578 (object 0x00000000f736ea38, a java.util.concurrent.ConcurrentLinkedQueue),
  which is held by " STARTING"
" STARTING":
  waiting for ownable synchronizer 0x00000000f736eb80, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "main"
"main":
  waiting to lock monitor 0x00007fc1b8004578 (object 0x00000000f736ea38, a java.util.concurrent.ConcurrentLinkedQueue),
  which is held by " STARTING"
	- waiting to lock <0x00000000f736ea38> (a java.util.concurrent.ConcurrentLinkedQueue)

" STOPPING" prio=10 tid=0x00007fc1d8139800 nid=0x359b waiting for monitor entry [0x00007fc1dcdb2000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at com.google.common.util.concurrent.AbstractService.executeListeners(AbstractService.java:368)
        - waiting to lock <0x00000000f736ea38> (a java.util.concurrent.ConcurrentLinkedQueue)
        at com.google.common.util.concurrent.AbstractService.notifyStopped(AbstractService.java:280)
        at com.google.common.util.concurrent.AbstractIdleService$1$2.run(AbstractIdleService.java:58)
        at java.lang.Thread.run(Thread.java:662)

" STARTING":
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000000f736eb80> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:842)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1178)
	at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:186)
	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
	at com.google.common.util.concurrent.AbstractService.stop(AbstractService.java:184)
	at com.continuuity.weave.internal.ZKServiceWrapper$1.stopping(ZKServiceWrapper.java:52)
	at com.google.common.util.concurrent.AbstractService$4$1.run(AbstractService.java:412)
	at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:262)
	at com.google.common.util.concurrent.AbstractService$ListenerExecutorPair.execute(AbstractService.java:470)
	at com.google.common.util.concurrent.AbstractService$4.run(AbstractService.java:410)
	at com.google.common.util.concurrent.AbstractService.executeListeners(AbstractService.java:369)
	- locked <0x00000000f736ea38> (a java.util.concurrent.ConcurrentLinkedQueue)
	at com.google.common.util.concurrent.AbstractService.notifyStarted(AbstractService.java:255)
	at com.google.common.util.concurrent.AbstractIdleService$1$1.run(AbstractIdleService.java:44)
	at java.lang.Thread.run(Thread.java:662)
"main":
	at com.google.common.util.concurrent.AbstractService.executeListeners(AbstractService.java:368)
	- waiting to lock <0x00000000f736ea38> (a java.util.concurrent.ConcurrentLinkedQueue)
	at com.google.common.util.concurrent.AbstractService.stop(AbstractService.java:212)
	at com.google.common.util.concurrent.AbstractIdleService.stop(AbstractIdleService.java:118)
	at com.continuuity.weave.internal.ZKServiceWrapper.doStop(ZKServiceWrapper.java:103)
	at com.google.common.util.concurrent.AbstractService.stop(AbstractService.java:198)
	at com.google.common.util.concurrent.AbstractService.stopAndWait(AbstractService.java:225)
	at com.continuuity.weave.internal.ZKServiceWrapperTest.testExternalControl(ZKServiceWrapperTest.java:62)