MODE-1674 Corrected several issues with backup/restore, the JSON reader/writer, and tests

Changed the backup and restore tests to use file-based persisted repositories rather than
in-memory repositories. When the repositories are restarted during the restore process,
restarting an in-memory repository (and cache) loses all data that was successfully restored.

One issue with the backup and restore process was that, even upon restore, the RepositoryCache's
sourceKey and repositoryKey were generated from the configuration's name and cache name. So
if the restored repository had a different name than the backup or the repository's cache was
named something different, the restored repository would never find the top-level nodes in the
workspaces, and the restored repository would appear to contain no content (even though the cache
actually did contain all the restored entries). This was corrected by using a new
"repository:info" document with metadata about the repository, including the source name and key,
the cache name, the repository name and key, the date the repository was created, and the
version of ModeShape that was used to create the repository. Because this "repository:info"
document is stored in the cache (with a well-known key), the document is included in the backups
and the document can be found upon restore. Note that 3.0.0.Final (and later) will create this
"repository:info" document if not found, so any pre-3.0.0.Final repository would have to be
at least started using 3.0.0.Final (or later) before a backup can be created.

Also discovered and fixed several other issues in the way backups were being read. One of these
had to do with escaped characters in JSON field values (which were not being processed correctly),
and that documents written to JSON were not properly escaping quotes and control characters
that appeared *within* string values. Finally, the JSON reader code (that was added for restore)
that read a file containing multiple JSON documents was not correctly handling the end of the stream.

After all these changes, a full build completes successfully.
MODE-1674 Changed restore test case to use RAM indexes

Even though the test configuration stores content on the file system, it can store the indexes
in RAM because the repository is restarted following the restoration, and the restart will
rebuild the indexes each time.

Also added a query to the test, checking that the content is properly indexed (and indirectly loaded).
MODE-1679 Corrected querying of REFERENCE properties

Reference properties were not being queried correctly: the tuple value of REFERENCE property was the string
representation of the node key rather than the exposed identifier, so this corrects the BasicTupleCollector to
properly process/generate the result set tuples for such properties. Additionally, multi-valued REFERENCE
properties were not being joined properly, since the tuple contained the array of identifier strings
and the join processing component was never looking for arrays.

A half-dozen new query tests were added to JcrQueryManagerTest that replicated all of these situations,
including some of the more elementary queries that are involved in the joins and/or subqueries. Prior
to these fixes, all of these tests failed. However, after the corrections were made, all of these tests
pass.
MODE-1684 - Updated the AS7 kit to allow the configuration of the workspace cache container
MODE-1684 - Updated the configuration file for the AS7.2 kit as well
MODE-1684 - Removed the file-store persistence from the workspace cache
MODE-1685 Deleting nodes now processes REFERENCE properties

When nodes were removed, their REFERENCE properties were not being processed to
remove the opposite references (from the target of the REFERENCE to the referrer,
used for referential integrity and returning the nodes that refer to a particular
node. As a result, removing the only REFERENCE properties pointing to a particular
node would incorrectly prevent the removal of the referenced node (even when there
were no more nodes referring to it).

Added some logic to correctly process these REFERENCE properties when the nodes
are being removed, ensuring the correctness of the referential integrity states.

Several unit tests were added to first replicate and then verify the correct
behavior.
MODE-1685 Moved the 'isReference' method to Property

Prior to this, there were two `isReference(Property)` utility methods (one in SessionNode
and the other in WritableSessionCache). These were removed and a new method added
to the org.modeshape.jcr.value.Property interface. This is better because the logic
is now centralized, and it also allows for the empty, single- and multi-valued Property
implementations to contain efficient implementations.

(I didn't do this originally because I was trying to minimize the impact of the changes.
But in reality there are new methods and making this change is far better than having
duplicate code. Thanks, Horia.)
Updated release notes for 3.0.0.CR3
Removed the AS7.2 kit from the build.
MODE-1687 - Fixed the registration of unused namespaces when initial cnd files are configured in the repository
MODE-1689 Added missing no-arg constructor for Metadata

This constructor was accidentally removed in a recent refactoring (see MODE-1669).
I've now added a test case that uses externalization (via a file system cache store) and replicates the problem. Adding the no-arg constructor fixes the issue.
MODE-1690 Corrected compiler warnings
MODE-1690 Improved support for custom authenticators

Prior to this fix, authenticators were used but were lost when the configuration was written back out.
It was also not possible to dynamically add/remove authenticators via the CLI or other administrative tools.

This change adds all of this functionality.
MODE-1687 Corrected compiler warnings
MODE-1690 Additional fixes to the support for custom authenticators

Applied several corrections suggested by Horia during the code review.
MODE-1675 - Extracted a separate module for modeshape-client which uses the standard assembly mechanism to attach (install & deploy) the artifact
MODE-1691 Corrected JSON Schema

Corrected our JSON Schema used to validate our repository configuration files to include fields for JDBC database URL, driver class, username and password. Added several test cases to verify the change works.
MODE-1692 - Fixed the names of the hibernate search worker parameters
Updated release notes for 3.0.0.Final