MODE-1396 JcrTckTest level 1 - Added session (optional) to JcrNodeType so that canSetProperty methods can work without a user session parameter
MODE-1396 JcrTckTest level 1 fixes:
- fixed iterator behaviour (exposed by level 1 tck test)
- changed PathNotFound with ItemNotFound
MODE-1396 JcrTckTest level 1 fixes: canAddChildNode should return true for residual children
MODE-1396 Tck level 2 fixes:
- avoided possible NPE
- changed nodes should be copied, not use the same reference
- added missing exception
MODE-1396 Tck level 2 fixes:
-added support for determining, in case of a node.save, whether nodes have been modified outside the hierarchy of the node
-added check on session.move, for SNS support under the destination's parent
-added checks, in writableSessionCache.save, for the case when nodes have been removed by another transaction and a preSave operation is attempted
MODE-1396 Tck level 2 fixes:
-added some expected exception conversions
-fixed getChangedNodesAtOrBelow
-added check for changing existing protected properties
MODE-1409 Added event handling for reordering in the case of SNS(s) and reordering at the end of the children list

This has been implemented as part of MODE-1396, the Tck Level 2 tests
MODE-1396 Tck Level 2 tests property fixes:
- added compacting of null values for multi-valued properties
- added check for mixed value types for multi-valued properties
- added expected javax.jcr.ValueFormatException
- fixed NPEs when null values are present in an array of values
MODE-1396 Tck Level 2 Changed node.getIdentifier to always return the full key string for "normal" nodes and only the identifier part for root nodes.
MODE-1396 Tck Level 2 - add/remove mixin should be reflected in the JCR properties immediately
MODE-1396 Tck Level 2 fixes:
- fixed string value for identifier paths
- added "abstract" validation on node.setPrimaryType
MODE-1396 Tck Level 2 fix - added permissions and child node definition check on session.move
MODE-1396 Tck Level 2 changes:
- updated UUID & reference behavior on import so that existing nodes can be found during import
- cleaned up child node definition validation
MODE-1396 Tck Level 2 - import/export fixes:
- when importing an node for which a new key is created and which has an explicit baseVersion and versionHistory reference properties, the code tried to create a new version history hierarchy instead of linking the existing one
- fixed NPE caused by an empty baseVersionKeys field when importing via the workspace
- updated Jcr pre-save to set the modified and created properties only if they haven't been changed externally (like is the case of an import)
MODE-1396 Tck Observation Tests - Changed the events which are fired for locks, so that they match what the TCK expects. To be more precise, only the isDeep and lockOwner property events should be fired.
MODE-1396 Tck Observation Tests fixes:
- fixed algorithm for detecting changes at/below path
- fixed test node type for node which don't allow children (mode:namespace was used previously, but that caused SystemNodes to be created)
- added missing node moved case handling, when the move was a rename
MODE-1396 Tck Versioning Tests fixes:
- fixed getVersionByLabel (was not using the fully qualified label name)
- fixed setting & updating of successors and predecessors (root node was not taken into account & no value was being set when the mix:versionable was applied for the first time)
- added & refactored session state validation in the JcrVersionManager
- fixed children names and reordering  when restoring versioned children
 -update the JcrTckTest class to be able to exclude only specific tests from the TCK, instead of entire test cases
MODE-1396 - Fixed cache clearing : the children need to be removed first, otherwise if the parents are removed, we can't determine the children's path
MODE-1396 - Tck Locking Tests fixes:
 - added missing handling on lock token in JcrLockManager
 - added exception conversion - AccessDenied to LockException
 - changed events & lock properties handling on locked nodes: the RepositoryLockManager sets the isDeep & owner properties, so that events are properly fired for locked nodes. Removed previous "hack" regarding event handling and also the code which changes the document "behind the scenes"
 - changed getLockTokens to return only the open scoped locks (Jcr spec)
 - bumped up testing memory size because of an OOM exception on JcrWritingTest and the LuceneIndexWriter
MODE-1396 - Tck Security Tests fixes - added AccessDeniedException when setting a property value from a read-only session