Changing version semantics to be more readable

The Version class had hard to understand semantics when two versions were
compared against each other.

Sample of the new logic:
* V_0_20_0.before(V_0_90_0) => true
* V_0_90_0.after(V_0_20_0)  => true

Closes #3124
Changed Java dependency from Depends to Suggest.

Since people are using the Oracle JAVA distribution and not the OpenJDK.
You can suggest it of course. Now the installation will at least continue.

If the init script is called, it will exit with a useful error message, that
no JDK is available via the JAVA_HOME variable.
Stabeilze SearchStatsTests

Query stats are only present (not 0) on nodes that hold a shard of the index.
Stabelize more failing tests.

- SimpleSortTests#testSortScript which was not using the mapping correctly
- SearchStatsTests#testSimpleStats which didn't clear the stats before
  running the test and a previous run could have added queries
Fix SearchStatsTest

Use actual node in test instead of the first node in the array
XContentMapValues.filter now works with nested arrays

The filter method of XContentMapValues actually filtered out nested
arrays/lists completely due to a bug in the filter method, which threw
away all data inside of such an array.

Closes #2944
This bug was a follow up problem, because of the filtering of nested arrays
in case source exclusion was configured.
Fixed `has_parent` query and filter returning no results with multi level child docs.
Added a benchmark for parent/child queries while indexing at the same time.
More test cleanups
report details if shard response has failed shards
Correct offsets in FVH also if stored field is used for highlighting

The SimpleFragemntsBuilder did not correct offsets if the used
analysis chais could produce broken offsets that could lead to
StringArrayIndexOutOfBounds Exceptions

Closes #3140
Fallback to extract terms if MultiPhraseQuery is large

Currently if MPQ is very large highlighing can take down a node
or cause high CPU / RAM consumption. If the query grows > 16 terms
we just extract the terms and do term by term highlighting.

Closes  #3142 #3128
Stabelize more tests

Wait for relocation before checking statistics or run refresh / optimze.
ChildrenQuery and ParentQuery now take into account documents that have been marked.

Closes #3144
Fixed minor issue in ASCT#indexExists(...)
Added shortcuts for several common commands

added simple way to add more complex mappings as well as shortcuts for flush
and status etc. all checking if requests return failed shards
Simplify TestCluster

TestCluster now doesn't use any reference counting anymore and
testcluster names are based on creation time to prevent confilcts if
builds hang.
Fixed the `GeoPointFieldMapper` to parse `geohashes` correctly.

Closes #3073
Add more verbose matchers / asserts to tests
Ensure all shards return compareable scores for rescore tests