Ensure watch registered for existence checks (if node not found).
Use the correct watchers

Create two sets of watchers, data watchers (used for
data changes, deletions, set) and children watchers (used
for children change notification).

This corrects how the wrong watcher/s was triggered in
certain functions, making it so that the right watcher
set is being triggered (and cleared as needed).

Breaking change: renames client watchers property to children
watchers and data watchers (since there is now two sets of
watchers).
Create acl functions (but mark as not implemented).
Add a few tests for the new watch changes