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)
ResourceReport was wrongly including completed containers in its
report.
No retry creation for sequential node.
Merge pull request #48 from continuuity/feature/zk-no-retry-sequential

No retry creation for sequential node.
Use a unique ID for service discovery node, rather than sequential node.
Merge pull request #47 from continuuity/feature/resource-report-includes-finished-containers

ResourceReport was wrongly including completed containers in its
Merge pull request #49 from continuuity/feature/zk-no-retry-sequential

Use a unique ID for service discovery node, rather than sequential node.
Merge branch 'develop' of github.com:continuuity/weave into feature/new-am
Handle ZK discovery registration when old ephemeral is still around.
Merge pull request #50 from continuuity/feature/discovery-duplicate-retry

Handle ZK discovery registration when old ephemeral is still around.
Merge branch 'develop' of github.com:continuuity/weave into feature/new-am
Added destrory() method to WeaveRunnable for easy resource cleanup
Upgrade to rc7 snapshot since it has new API.
Merge pull request #51 from continuuity/feature/add-destroy-method

Added destrory() method to WeaveRunnable for easy resource cleanup
Added a helper method to watch for Service completion.
Merge pull request #52 from continuuity/feature/added-service-helper

Added a helper method to watch for Service completion.
Add ability to get the memory and virtual cores given to a
runnable through the weave context.
renamed method to getMaxMemoryMB
Merge pull request #53 from continuuity/feature/add-memory-and-cores-to-context

Add ability to get the memory and virtual cores given to a
Resolve the race condition.