Rewrite to use the pure JS zookeeper client library

- [x] Fix tests 
- [x] travis 
- [x] the vm

> The purejs `node-zookeeper-client` does throw when some unexpected things happen so some `try`s are probably needed in here.

^ This is not plausible unfortunately. There are about 40 places where this can throw if zookeeper does something unexpected. Not sure how much of an issue this is.
don't think I understand this whole `nextLowest` part, mind elaborating?