Added an indices level field data cache listener that always gets invoked and updates indices statistics and services about field data loading and unloading.

Moved the circuit breaker memory reducing logic to the IndicesFieldDataCacheListener, so it always reduces the memory used when field data gets unloaded,
this fixes a issue where the circuit breaker didn't get reduced when segments where no shardId could be resolved get cleared up.

Also made sure that exceptions in the percolator service are bubbled up properly.

Closes #5588
Removed incorrect comment
[Tests] Reduce the number of threads used by the BackgroundIndexer by default

It sometimes overloads the nodes.
Typo in the description for include_in_all

I know this is uber-minor, but I was confused by the phrase "the raw field value to be copied". I assume "is" was supposed to be instead of "to"
Freq Terms Enum
A frequency caching terms enum, that also allows to be configured with an optional filter. To be used by both significant terms and phrase suggester.
This change extracts the frequency caching into the same code, and allow in the future to add a filter to control/customize the background frequencies
Closes #5597
Fix mapping creation on bulk request

When a bulk request triggers an index creation a mapping might not be
created. The reason is that when indexing documents in a bulk,
an indexing operation might fail due to a shard not yet being
started. The mapping service, however, might already
have the mapping but the mapping update is never issued to the master,
even on subsequent indexing of documents.

Instead, the mapping must be propagated to master even if the
indexing fails due to a shard not being started.

closes #5623
Remove ScriptDocValues.EMPTY.

Instead the default implementation is used, but on top of empty
(Bytes|Long|Double|GeoPoint)Values. This makes sure there is no
inconsistency between documents depending on whether other documents in the
segment have values or not.

Close #5646
[TEST] Use NoMergePolicy rather than NoMergeScheduler in FreqTermsEnumTests
Document es.node.mode and add possible options to error message
Add `flush` method for BulkProcessor class

There is no explicit method `flush/execute` in `BulkProcessor` class. This can be useful in certain scenarios.
Currently it requires to close and create a new BulkProcessor if one wants an immediate flush.

Closes #5575.
Closes #5570.
Geo context suggester: Require precision in mapping

The default precision was way too exact and could lead people to
think that geo context suggestions are not working. This patch now
requires you to set the precision in the mapping, as elasticsearch itself
can never tell exactly, what the required precision for the users
suggestions are.

Closes #5621
Made template endpoint compatible with search endpoint

Before this the from/size parameters did not work.
Also updated the rest api spec definition file with all the query_string
parameters.

Fixes #5550
[DOCS] remove extraneous ` from cache page
Moved the decision to load p/c fielddata eagerly to a better place.

Closes #5569
Cleanup IndicesFieldDataCache and IndexFieldDataCache

This commit adds several asserts and removes possible `null` values
from the `FieldDataCache` implementation.

Closes #5664
[BUILD] Set -Dtests.jvms=auto by default to make use of multiple JVMs
[TEST] Make BulkTests#testBulkProcessorFlush more robust
sizeInBytes can be 0
[TEST] Make sure refresh is called by `indexRandom`, even if the list of documents to index is empty.
[TEST] Fix [Children|Parent]ConstantScoreQueryTests with nightly=true

Those tests use RandomIW which can flush after each document taking forever
to index the 20k docs it was indexing. This commit makes sure the IW is
sane and the number of docs is not too crazy.