BUG-509: add some documentation

Documents AlwaysFailOperation and DataNodeContainerModificationStrategy

Change-Id: Ibb67dc5f4a829547538ba02c3eac4f995a6fe6ef
Signed-off-by: Robert Varga <rovarga@cisco.com>
BUG-509: create data tree SPI package

This patch introduces an SPI package, which contains the metadata tree
node abstraction and reference implementation. This will substitute the
StoreMetadataNode class.

Major improvement is the isolation of lifecycle from the rest of the
implementation and major reduction in memory usage, as leaf nodes no
longer need to lug a HashMap around.

Change-Id: I89215672006b1ed6064feaf186c94c05550d299e
Signed-off-by: Robert Varga <rovarga@cisco.com>
BUG-509: migrate to TreeNodes

This patch performs the switchover to SPI-provided TreeNodes. It also
extracts the information needed for checking applicability of a
modification into a separate interface. Also adds some documentation in
the non-trivial write+merge path.

Change-Id: I83f5ca30bff21774759f9b675b19b6e9622076a2
Signed-off-by: Robert Varga <rovarga@cisco.com>
BUG-509: fix ModifiedNode locking

This removes the 'sealed' flag from ModifiedNode, as it is not a
publicly-visible object. Also drop the synchronized blocks and
reintroduce them in InMemoryDataTreeModification, which is the user
entrypoint.

Change-Id: I6c8be61701134bd8f645b8d4f0a8ef3ae218f0ac
Signed-off-by: Robert Varga <rovarga@cisco.com>
BUG-509: introduce Version concept

This patch introduces the concept of a Version, which is disconnected
from any ordinal number. This is useful for saving memory, as the
versioning of TreeNodes needs to only detect version mismatches and not
which version is historically newer.

Change-Id: I625d9d945ff3fd416dd82bb3f1ff4268f2001e5a
Signed-off-by: Robert Varga <rovarga@cisco.com>
Merge "BUG-509: add some documentation"
Merge "BUG-509: create data tree SPI package"
Merge "BUG-509: migrate to TreeNodes"
Merge "BUG-509: fix ModifiedNode locking"
Merge "BUG-509: introduce Version concept"