Added prefix suggestions based on AnalyzingSuggester

This commit introduces near realtime suggestions. For more information about
its usage refer to github issue #3376

From the implementation point of view, a custom AnalyzingSuggester is used
in combination with a custom postingsformat (which is not exposed to the user
anywhere for him to use).

Closes #3376
Improving test CompletionSuggestSearch test stability

Ensuring that the maximum number of replicas is less than the number of nodes.
Don't cache BytesRef in ThreadLocal
Wait for green status when index is created
Make (HighlightBuilder|SearchContextHighlight).Field consistent

Update HighlightBuilder.Field API, it should allow for the same API
as SearchConstextHighlight.Field. In other words, what is possible
to setup using DSL in highlighting at the field level is also
possible via the Java API.

Closes #3435
Added index templates REST support for HEAD and proper 404

* Added HEAD support for index templates to find out of they exist
* Returning a 404 instead of a 200 if a GET hits on a non-existing index template

Closes #3434
Overwriting pidfile on startup

The current implementation does not overwrite, but only prepend the new PID into the pidfile.
So if the process is 4 digits long, but the file is already there with a 5 digit number, the file will contain 5 digits after the write.

Note: If the pidfile still exists this usually means, there either is already an instance running using this pidfile or the process has not finished correctly.

Closes #3425
Added busy waiting util and add suite timeout.

Some rare tests require to busy-wait a short time until a given
condition occurs for instance until a threadpool scaled down the
number of threads. This commit adds a util that waits a give time
until a condition is met, in contrast to Thread.sleep this method
waits increases the wait time by doubleling the waiting time
iterativly by doubeling it to prevent fast tests to always wait
a given sleep interval.

This commit also adds a suite timeout to fail a test if the test
times out. The test infrastructure will provide thread stack traces
if the timeout kicks in. The default timeout is set to 1h.
Fix occasionally hanging test moving away from timeouts.

Fixes EsExecutorTests to use latches and a busy wait util from
ElasticsearchTestCase. This commit also adds some minor randomization
to the test.
Streamline Search / Broadcast (count, suggest, refresh, ...) APIs header

closes #3441
the ttl purger might have already deleted the documents.
Add better assertion reporting if nodes are not present in the ClusterState
Use busy sleeps in NoMasterNodeTests

The busy sleep is less prone to slow tests / machines while still
fails if the actual condition isn't met.
Use domain specific assertions for shard failures across tests
Catch RejectedExecutionException in outer ping request
Explicitly invoke refresh, this might have failed as part of type removal from the _percolator index.
Added missing metadata fields to upserted documents (parent, routing, ttl, timestamp, version and versionType)

Closes #3444
Use assertHitCount
Maxing out retries on conflict in bulk update cause null pointer exceptions

Also:
Bulk update one less retry then requested
Document for retries on conflict says it default to 1 (but default is 0)
TransportShardReplicationOperationAction methods now catches Throwables instead of exceptions
Added a little extra check to UpdateTests.concurrentUpdateWithRetryOnConflict

Closes #3447 & #3448
release 0.90.3