Making Zookeeper integration code more readable.

* Making more variables into `final` so that the state modification is more controlled.
* Adding comments in various places, especially regarding the lock states.
* Adding zookeeper bootstrapping to the test suite, and moving the test out of the integration test (in fact, this test was blacklisted and was never executed).
* Reducing the usage of the mockito whitebox.
* Reducing the amount of shared states, by pulling the scavanger state out of the member variable and storing it within the function scope.
* Removing the usage of `java.util.Timer`.
* Separating out the zookeeper connection wait outside the constructor - that makes the tests more reliable, since having the lock managers in disconnected state is most likely bad.