Allow -SNAPSHOT versions to be parsed by Version.fromString
Take percentage watermarks into account for reroute listener

Fixes an issue where only absolute bytes were taken into account when
kicking off an automatic reroute due to disk usage. Also randomized the
tests to use either an absolute value or a percentage so this is tested.

Also adds logging for each node over the high and low watermark every
time a new cluster info usage is gathered (defaults to every 30
seconds).

Related to #8368
Fixes #8367
Indices API: Fixed backward compatibility issue

If a 1.4 node needs to forward a GET index API call to a <1.4 master it cannot use the GET index API endpoints as the master has no knowledge of it. This change detects that the master does not understand the initial request and instead tries it again using the old APIs. If these calls also do not work, an error is returned

Closes #8364
[TEST] BWC test might not start enough nodes for GREEN status
Internal: Don't pass acceptdocs down to parents filter.

Closes #8390.
[TEST] fix term_vector realtime test to call wait for green and use no replicas

If a shard (e.g. replica) gets initialized after we indexed the document it gets refreshed internally and we find the doc and its term_vectors, thus the test fails
Tests: log how long IndexWriter.rollback took, and when MocmFSDirectory service started check index
Core: add debug logging to InternalEngine.close
Update multi-get.asciidoc

Documented that the fields parameter can be passed in the query string.

Closes #4006
Docs: Improve the exists/missing filters documentation

Closes #7274
Update datehistogram-aggregation.asciidoc

Clarified use of fractional time units in the date histo agg.

Closes #7957
fix mention of Apache License, version 2.

Closes #8400
Internal: harden recovery for old segments

When a lucene 4.8+ file is transferred, Store returns a VerifyingIndexOutput
that verifies both the CRC32 integrity and the length of the file.

However, for older files, problems can make it to the lucene level. This is not great
since older lucene files aren't especially strong as far as detecting issues here.

For example, if a network transfer is closed on the remote side, we might write a
truncated file... which old lucene formats may or may not detect.

The idea here is to verify old files with their legacy Adler32 checksum, plus expected
length. If they don't have an Adler32 (segments_N, jurassic elasticsearch?, its optional
as far as the protocol goes), then at least check the length.

We could improve it for segments_N, its had an embedded CRC32 forever in lucene, but this
gets trickier. Long term, we should also try to also improve tests around here, especially
backwards compat testing, we should test that detected corruptions are handled properly.

Closes #8399
more debug logging
Docs: Fix some typos, and sentence structure.

Closes #8404
Update cluster.asciidoc

Tidied up asciidoc, again
Core: fix SerialMergeScheduler to trigger index throttling

SerialMergeScheduler (deprecated but still accepted, and randomly
picked by tests) was failing to cause index throttling when merges
were falling behind.  This could then cause "Delete Index failed - not
acked" timeouts when it took more than 30 seconds to close the index.

Closes #8405
[STORE] Calculate Alder32 Checksums for legacy files in Store#checkIntegrity

Previously we didn't calculate this checksums even though we have a checksum
to compare. Since we now also verify checksums for legacy files #checkIntegrity
should also calculate the legacy checksums.

Closes #8407
[STORE] Synchronize operations that modify file mappings on DistributorDirectory

The rename(String, String) method doesn't allow this implementation to use a simple
concurrent map. There is a race during a rename operation where files are not fully
renamed but already visible via #listAll(). This inconsistency can lead to problems
when opening commit points since the pending_segments_N as well as segments_N are visible
but not yet atomically renamed.

Yet, non of the methods that are synced are long running such that adding sychronization
doesn't introduce bottlenecks here. The Direcotry#sync(...) method is not synchronized since
it doesn't change any mapping nor does it depend on the mapping.

Conflicts:
	src/main/java/org/elasticsearch/index/store/DistributorDirectory.java
	src/test/java/org/elasticsearch/index/store/DistributorDirectoryTest.java