This replaces the three treecache derived caches with a new
cache based on a persistent recursive watcher.
This should greatly reduce the number of watches on the zk server,
radically simplify the caching logic, and allows us to ignore
events for znodes we are uninterested in (for example, we can avoid
performing "get" calls on lock nodes) which should reduce zk
network traffic.
Change-Id: Ie8b578f3b8dd39fdf43025a31d55ce4e5801b563