MODE-1985 Teiid DDL parser throws exception parsing column with object datatype
Modified Teiid datatype parser to allow length on a type of "OBJECT." This is a new Teiid change.
MODE-1984 Corrected shareable node behavior upon removing a shared node

When a shared node is removed, ModeShape's behavior is that this is
the same as calling `node.removeShare()`, which just removes the share
and does not affect the other nodes in the shared set. However,
when the primary node was removed, ModeShape was incorrectly removing
the node from the repository, even though the parents of the other
nodes in the shared set still contained references to the shared node.

In particular, the problem appeared to manifest itself only when the
shared node was looked up by identifier and then removed. The resulting
node was an instance of `JcrNode` rather than `JcrSharedNode`, and thus
the remove logic `JcrSharedNode` was never called.

Quite a few small changes were required to fix the problem. First,
two unit tests were added to replicate the incorrect behavior. Then,
several smaller changes were required in a number of other classes.
For example, the logic of removing a shared node was moved out of the
`JcrSharedNode` class and into the JcrNode base class. However, this
additional logic only kicks in if the node is `mix:shareable`.

While working on this fix, I discovered another subtle bug in how the
SessionNode removed a child when that child had additional parents.
This was corrected and validated.

The final challenge with this fix was that when `node.save()` was
called on the parent (or ancestor) of the parent from which the shared
node was removed, the changes to the shared node (which no longer appeared
as a descendant of the saved node) were not being saved. The cause turned
out to be that when the *primary* node was removed, ModeShape was not
recording that the old parent was removed from the additional nodes,
and thus the logic to determine which nodes are affected by the
`node.save()` never discovered that the removed node used to exist
below the saved node.

All unit and integration tests pass after these changes.
MODE-1444:  Enable support for IPV6
MODE-1444:  Removed @Ignore
MODE-1444:  Allow to use stack independent local host address.
MODE-1987 Added a new rule-based test annotation @SkipOnOS which allows tests or test cases to be skipped altogether on certain OSes. Also, moved the SkipTestRule to the common.test package.
MODE-1982 Updated the FileSystemConnector to be Pageable.
MODE-1986 Enhance DdlParsers to provide access to parser 'scoring'
Added the recommended changes to the DdlParsers API. One slight change was that the result "getScore" method returns and "int" and not an "Object."
MODE-1990 Corrected Git connector's use of remote names

The remote names are now properly parsed and collected, then used
when resolving all branch names. If an empty list of names is provided,
then local branch names will be used.

Also changed the documentation and a parameter name of the Pageable
and Connector interfaces (no semantic changes whatsoever).
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.