run user-provided callbacks in a thread external to the zookeeper callback itself so that they can actually use zookeeper if they need to