BUG-8733: switch to using DOMDataTreeListener-based APIs
This patch switches ShardedDOMDataTree to use
ListenableDOMDataTreeShard, performing adaptation and aggregation
only when needed.
The end result is that a DOMDataTreeListeners affected only by
a single ListenableDOMDataTreeShard are passed directly to that
instance, allowing for efficient event delivery.
In case a registration spans multiple shards, we register a listener
with each and use DOMDataTreeListenerAggregator to efficiently
merge the callbacks.
Change-Id: I0a879b45b2389d8def5ab824ab29dfbccc2b4f86
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>