Query Templates: Adding dedicated /_search/template endpoint

In order to simplify query template execution an own endpoint has been added

Closes #5353
Recovery API

Adds a new API endpoint at /_recovery as well as to the Java API. The
recovery API allows one to see the recovery status of all shards in the
cluster. It will report on percent complete, recovery type, and which
files are copied.

Closes #4637
Add new / missing version constants
Add simple escape method for special characters to template query

The default mustache engine was using HTML escaping which breaks queries
if used with JSON etc. This commit adds escaping for:

```
\b  Backspace (ascii code 08)
\f  Form feed (ascii code 0C)
\n  New line
\r  Carriage return
\t  Tab
\v  Vertical tab
\"  Double quote
\\  Backslash
```

Closes #5473
[TEST] Added skip clause for regexp feature
[TEST] disable cat.recovery/10_basic.yaml
[TEST] Fix cat.recovery/10_basic.yaml to allow '-' in the hostname
[TEST] Add a test that ensures Version#CURRENT is actually the latest version
[API] renaming search-template to search_template.

Name of the API should be a valid identifier.
Improved regular scroll api by using IndexSearch#searchAfter instead of regular search methods which rely on `from` for pagination.

This prevents the creation of priority queues of `from + size`, instead the size of the priority queue will always be equal to `size`.

Closes #4940
fix typo joda-time link
[TEST] added missing wait for yellow to indices recovery REST test
Renamed spec search.template.json to search_template.json
to match the name of the method.
Close Directory / Store once all resources have been released

Currently we close the store and therefor the underlying directory
when the engine / shard is closed ie. during relocation etc. We also
just close it while there are still searches going on and/or we are
recovering from it. The recoveries might fail which is ok but searches
etc. will be working like pending fetch phases.

The contract of the Directory doesn't prevent to read from a stream
that was already opened before the Directory was closed but from a
system boundary perspective and from lifecycles that we test it seems
to be the right thing to do to wait until all resources are released.

Additionally it will also help to make sure everything is closed
properly before directories are closed itself.

Note: this commit adds Object#wait & Object@#notify/All to forbidden APIs

Closes #5432
[Test] Run after checks even if cluster scope is == TEST
[TEST] Don't use replicas if only primaries are expected or the first shard in the list shoudl be a primary
[TEST] Make SearchWhileRelocatingTests to handle known limitations gracefully
[TEST] Assert search response in MinDocCountTests#testMinDocCountOnTerms
Update to forbidden-apis 1.4.1

Closes #5492
Nodes who are not currently master do not update the ElectMasterService when dynamically setting min_master_nodes

When updating the min_master_nodes setting via the Cluster Settings API, the change is propagated to all nodes. The current master node also updates the ElectMasterService and validates that is still sees enough master eligible nodes and that it's election is still valid. Other master eligible nodes do not go through this validation (good) but also didn't update the ElectMasterService with the new settings. The result is that if the current master goes away, the next election will not be done with the latest setting.

Note - min_master_node set in the elasticsearch.yml file are processed correctly

Closes #5494