Rewrite to use the pure JS zookeeper client library

- [ ] The purejs `node-zookeeper-client` does throw when some unexpected things happen so some `try`s are probably needed in here.
- [ ] Fix tests / travis / the vm
Okay my solution to solve this problem is to add wrappers for each of the `this._zk` methods which the client might call which will guard against use in an incorrect state and return an error if there's a state issue.