CURATOR-33 recursive TreeCache recipe

I think the reason that we went with the thread approach rather than handling the CONNECTED event was that it avoids a potential race condition. If start() gets called on the TreeCache and the same time as the tree cache is receiving a CONNECTED event, it's possible for the wasCreated() method to be called twice.

For LeaderLatch, this was an issue because it would toggle the elected state (i.e leader, not leader, leader) in quick succession. For the TreeCache cache, it will just mean that refresh will get called twice. I'm not sure if having two refreshes running at the same time will cause any concurrency issues?