CURATOR-33 recursive TreeCache recipe

There is an edge case that is not handled here. If the tree cache is started prior to a connection to ZooKeeper becoming available, then the state change will be CONNECTED rather than RECONNECTED. This means that the necessary watches don't get set up. The LeaderLatch recipe had a similar issue, which was solved by waiting until a connection was available (in the background) in start().