TMDM-8028: "[Request] JSON-based query language"

Initial commit for a query language based on JSON format.
Adds basic operator support (eq, gt, gte, lte, or, and, not, startsWith)

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Adds support for "joins".
Adds unit for covering join in query.

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Adds support for query paging (start, limit).
Adds unit test to ensure test coverage.

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Refactoring: ensure same syntax for common language elements (TypedExpression processor).
Adds support for "max(field)" / "min(field)" / "index(field, n)" / "isa(field)" in JSON based query language.
Adds unit test for new query operators.

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Query enhancements
* History navigation operator "as_of").
* Implementation for a ephemeral storage to use to build a to-date representation of the data:
  * Covers all supported SQL queries in conditions
  * Covers Join operator (1 level only).
* Adds support for "as_of" in JSON parser.

Unit tests
Initial unit tests for storage implementation dedicated to history browsing.
Adds unit test for query parser.

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Fix a flat type mapping issue when a referenced record contains itself another reference to another record.

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Adds support for order_by in query language.
Adds unit test for order by support.

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Adds support for full text operations in query language.
Adds unit test for full text support.

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Adds support for metadata fields in query language.
Adds unit test for metadata fields  support.

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Adds support for cache configuration in query language.
Adds unit test for cache configuration support.

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Adds support for equals between fields in query language.
Adds unit test for equals between fields support.

(https://jira.talendforge.org/browse/TMDM-8028)
TMDM-8028: "[Request] JSON-based query language"

Adds support for distinct field value selection in query language.
Adds unit test for distinct field value selection support.

(https://jira.talendforge.org/browse/TMDM-8028)
Merge branch 'master' into prototype/6.0/query

Conflicts:
	org.talend.mdm.core.enterprise/test/com/amalto/core/storage/tool/StorageTester.java
TMDM-8028: "[Request] JSON-based query language"

Adds support for count (select and order_by) in query language.
Adds unit test for count (select and order_by) support.

(https://jira.talendforge.org/browse/TMDM-8028)