MODE-1527- Migrated initial version of the text extractors from 2.x and updated the binary store to extract the text and mime-type of binary values

Working on this, exposed how fragile - lock-wise - is working with the SharedLockingInputStream (FileSystemBinaryStore). Therefore, I've updated the mime-type detection so that mark & reset are avoided as much as possible, also making sure that streams are closed after each detector finishes with them.
The Tika version was bumped to 1.1 which required also the update of the POI version to 3.8.
MODE-1527 - Updated the text extraction process to be asynchronous with the indexing process.

 This meant that a few changes were needed:
 - the text extractors configuration has been updated to resemble that of the sequencers
 - the binary store interface has been updated to be able to store and retrieve extracted text for a given binary (source) value
 - the TextExtractors class was changed to become the entry point into text extraction
MODE-1527 - Updated the text extraction process to be triggered preemptively by the binary storage, when a binary value is created.

For this to be possible, the context of the extractor cannot contain any node-specific information. Also, this exposed an issue with the SharedLockingInputStream: if the stream is closed in the "read" methods, Tika's parsers will keep reading it over and over (effectively reopening it each time) either causing OOM errors or duplicate text. This means the "close" call from the read methods has been removed.
MODE-1527 -Added AS7 support for configuring and working with text extractors. To validate the configuration and Arquillian integration test was added as well.
MODE-1544 - Extracted Tika based mime-type detector and updated the way mime type detectors are loaded and initialized.

Because of the AS7 support, the detectors need to be loaded via the Environment class loader. Also, because text extraction (and implicitly mime-type detection) can be triggered preemptively, some of Tika's excluded dependencies needed to be added back (e.g. for .java and .class files)
MODE-1544 - Removed the mime-type detector field from the execution context, as the binary storage & binary values should be the "owners" of the mime-type related information.
MODE-1545 - Implemented a mechanism for the binary store to persist the mime-types of binary values, in order to avoid detection each time.

While working on this, another issue was exposed and fixed: when persisting data to disk (e.g. the AS7 kit), the defaultPrimaryType of node type definitions was not properly re-initialized on a restart.
MODE-1433 - Added a JDBC datasource to the AS7 kit and an integration test which verifies that the DS is correctly setup and can correctly access the repository.
MODE-1416 - Updated the rest server to produce not only application/json but also text/plain and text/html, based on the Accept header of the request.
Clients which rely on the old (default application/json behavior) should specify the Accept header in the request.
MODE-1458 Implemented Shareable Nodes

The JCR shareable nodes feature was implemented using the linked nodes capability of
the internal Repository Cache framework. All basic functionality is implemented
and all TCK tests pass with the exception of several tests that have bugs/issues
(see https://issues.apache.org/jira/browse/JCR-3370, https://issues.apache.org/jira/browse/JCR-3371
and https://issues.apache.org/jira/browse/JCR-3380). Two other shareable node
tests are currently failing because of how Node.save() is implemented
(see https://issues.jboss.org/browse/MODE-1552). Note that Node.save() is deprecated,
and a workaround is to simply use Session.save() instead.
MODE-1545 Corrected the JavaDoc for the AbstractBinaryStore
MODE-1549 JCR-SQL2 uses '<>' rather than '!=' as not-equal-to operator

ModeShape abstract syntax tree used '!=' as the "not-equal-to" operator, but did
alias '<>' to '!='. This change reverses this so that the '<>' token is considered
the primary operator, and '!=' is aliased.
MODE-1556 Corrected the handling of != (or <>) query criteria on numeric fields

Numeric values were not being handled consistently in the indexes and in queries. For example,
some values were being treated as integer values in the indexes and queried as longs (which
doesn't work). Additionally, some of the logic of handling and combining "not" queries was
incorrect.

All unit and integration tests pass with these changes.
Fixed javadoc errors that occurred when moving from Eclipse Helios to Eclipse Indigo. Also fixed a pom error that occurred when upgrading Eclipse.
Added comment to pom that references the online thread where I got the pom code to solve the build issue.
Added a comment to pom that references an online thread of where I got the pom code to solve the build error.
MODE-1546 Handled periodic failure

Attempted to fix a failure that shows up periodically, most of the time when the indexing
is being performed, but sometimes in other cases. The error is due to the inability of
a CachedNode to compute its path segment, because the parent no longer contains a child reference
to the node. This change attempts to correct that problem by identifying the case and throwing
a NodeNotFoundInParent exception. The indexer can simply ignore such nodes.
MODE-1469 - Initial work on fixing the indexing of the system content
MODE-1469 - Fixed indexing of system nodes. Only /jcr:system, /jcr:system/jcr:nodeTypes and /jcr:system/mode:namespaces will be indexed.
Updated the JSON configuration to control whether system indexing is: sync, async or disabled, with the latter being the default. Updated the query tests to reflect those changes.

 Working on this, another issue surfaced: we weren't closing properly the executor services that we're creating during the repository startup. Therefore, some changes were added in this area as well.
MODE-1469 - Updated AS7 subsystem with the "systemContentMode" setting which controls the behavior of system content indexing.