Update to #11: "Add an optional 'Listener' to ZooKeeperMap which fires as nodes are added, changed, or removed"

I have taken the work that @cscotta had done in #11 and addressed the comments from 9639406e2cb5d58245c8e839c2ee9295dde3915f.

The notable changes to his work include:

* Rename `ZooKeeperMap.ZKMapListener` to `ZooKeeperMap.Listener`
* Add tests in `ZooKeeperMapTest`
* Add a noop `Listener` to reduce conditions

It is clear now that the tests in `ZooKeeperMapTest` that override `putEntry()` and `removeEntry()` could be updated to use the new `Listener`, but I wanted to change as little as possible to begin with.