maintain api for new zk_ functions

make everything private unless it must be public. we also
* kill the @should_exit parameter, which is ambigous
* force node creation during zk connection
* raise a RuntimeError if we cannot set a watch; there should be
  no way to recover from that