BUG-509: Refactor listener walking

This patch creates a proper abstraction for examining a
DataTreeCandidate for changes. This has the nice property of finishing
the hiding of all implementation details behind proper interfaces, such
that our implementation is free to do proper lifecycle as it pleases.

Also gets rid of the AutoCloseable from candidate. It can be
reintroduced in the need appears.

Change-Id: I13301548594d4ae34e929c7202661997ea5aca90
Signed-off-by: Robert Varga <rovarga@cisco.com>
Merge "BUG-509: Refactor listener walking"