BUG-509: Improve InMemoryDOMDataStore structure

Introduce AbstractDOMStoreTransaction, which holds common code. Also use
ToStringHelper to get consistent toString().

Change-Id: I246c891fa4a9a4c12b21eeb2743a00097dd95fbe
Signed-off-by: Robert Varga <rovarga@cisco.com>
BUG-509: Fix thread safety of listener registration

This commit fixes the race condition where a listener is registered
after preCommit() and before commit(). This is done by moving the
collection into the commit() where it is protected by the
commit/listener synchronized block.

The unregistration safety is handled by wrapping the returned
registration and invoking the equivalent synchronized block.

Change-Id: Ie9abc81b2a773418b34c3051f7665b0dcf047f76
Signed-off-by: Robert Varga <rovarga@cisco.com>
BUG-509: Rename StoreMetadataNode.createRecursivelly

This is a rename of StoreMetadataNode.createRecursivelly() to
StoreMetadataNode.createRecursively(), fixing an obvious typo.

Change-Id: I3891459ebae561b89c27438f2e0f187bd7b7c503
Signed-off-by: Robert Varga <rovarga@cisco.com>