MODE-1988 Added ability to enable still-alpha child optimization logic

As the number of children increase for a node, it becomes more expensive
to read and write that node's document representation. The ModeShape 3
rearchitecture included the ability to break up the child references in
a parent node's document into multiple separate documents based upon the
total number of children. The session cache framework is able to work
with a node's representation regardless of the number of block (page)
documents are used to store the child references, and the session cache
(and update) framework never change the number of documents used to
represent a node.

The responsibility of splitting a node's "too many" child references
amongst more documents or combining/merging multiple documents with
"too few" child references is completely separate and is done
asynchronously in a scheduled background process that is called
"document optimization".

Prior to this change, there was no way to enable or run document
optimization. The thought was that it is an optimization step that would
eventually be enabled once users start running into issues with nodes
containing very large numbers of child references. Also, it would be
enabled only after the rest of the infrastructure was in place and more
thoroughly vetted.

When we added federation, we made it possible for connectors to be
"pageable", meaning that a connector could return a node document that
contained only some of the child references, while the remaining
child references would then be accessed as separate documents (i.e.,
pages). The session cache framework's ability to work with "segments"
of child references was used for this part, and has shown to be
quite useful. IOW, part of the original "paging"/"blocks"/"segments"
session cache infrastructure is now being used in federation.

This commit exposes via new configuration options (in both the JSON
and EAP subsystem) for running the document optimization process
as a scheduled background thread. The scheduling-related fields are
identical to the garbage collection fields, while there are two new fields
for the document optimization (e.g., the target number of child references
to have in each page, and the tolerance allowed between the actual and
target numbers before optimization kicks in). Currently both fields
have no defaults, which requires users to set them.

At this time, the document optimization process is DISABLED by default,
and enabling it requires picking the two fields and results in INFO-level
log messages stating that this is a technology preview that should not
be used in production. Therefore, the risk of incorporating these
changes into the codebase is relatively low.

However, with these changes it is now possible for users to experiment
with this feature and help us test it and identify/fix problems.
It is not clear how long the feature will remain 'tech preview',
but it will remain so only until we're much more satisfied
with the stability and quality of the implementation AND have better
defaults for the target and tolerance fields (based upon experimental
testing).
Fixed compiler warnings from recent commits.
MODE-1960 Updated the POI dependency to 3.10-beta1 and added back the MSOffice Sequencer and Tika Extractor, which were disabled as a result of https://issues.jboss.org/browse/MODE-1934.
MODE-1992 Updated the DatabaseBinaryStore so that it doesn't use ResultSet#first, which only works for scrollable result sets.
MODE-941 Updated PropFind to filter out custom properties when only certain properties are requested.
MODE-1991 OracleDdlLexicon contains unused type
Removed the unused constant. Also removed unused constants in the other DDL lexicon classes.
MODE-1993 Changed place of event count down, since events might come bundled
MODE-1997 JcrNodeType should implement Namespaced
MODE-1997 JcrItemDefinition should implement Namespaced
MODE-1610, MODE-1707 Implemented the JDBC MetData connector. Part of the code and the overall behavior of the connector has been ported from 2.x. In addition, each table exposes a set of foreign keys (under a container named foreignKeys). The DB-specific profiles have been added back to the parent pom and in certain cases the driver versions updated.
MODE-1707 Updated the EAP & distribution kits to include the JDBC metadata connector
MODE-1707 Tested against various DBs and updated database profiles.
MODE-1996 Fixed the setting of explicit, non-string attributes for external sources.
MODE-1995 Fixed the initial content import of nodes defined in namespaces that do not have an http-like URI. In addition, another inconsistency was fixed: when importing nodes which have their name explicitly specified via jcr:name, a different primary type was being set.
MODE-1998 JcrValue#equals should support URI Property types.
Corrected compiler warnings and removed unnecessary JavaDoc
MODE-1956 Add helper function to (un)escape illegal JCR characters
MODE-1958 DDL Sequencer should use Jsr283Encoder rather than its own custom code
Added a getter in Session to return a class of utilities. Removed the code from DDL sequencer framework dealing with converting JCR-illegal characters
and replaced with calls to the new utilities class.
MODE-1956 MODE-1958 Simplified how the encoding/decoding methods are exposed

Removed the separate 'JcrUtils' interface from the public API (along with
the implementation), and moved the 'encode' and 'decode' methods to the
ModeShape-specific 'Session' interface.
MODE-1994 enabled surefire stacktrace output
MODE-1999 Fixed the Git connector in the cases when certain commits cannot be read from the repository.