MLT Query: use ParseField#withAllDeprecated for percent_terms_to_match

Also the parameter was deprecated but not removed so we keep it in the doc and
mark it as deprecated ...

Closes #8241
Aliases: Throw exception if index is null or missing when creating an alias

Fixes a bug where alias creation would allow `null` for index name, which thereby
applied the alias to _all_ indices.  This patch makes the validator throw an
exception if the index is null.

```bash
POST /_aliases
{
   "actions": [
      {
         "add": {
            "alias": "empty-alias",
            "index": null
         }
      }
   ]
}
```
```json
{
   "error": "ActionRequestValidationException[Validation Failed: 1: Alias action [add]: [index] may not be null;]",
   "status": 400
}
```

The reason this bug wasn't caught by the existing tests is because
the old test for nullness only validated against a cluster which had
zero indices.  The null index is translated into "_all", and since
there are no indices, this fails because the index doesn't exist.
 So the test passes.

However, as soon as you add an index, "_all" resolves and you get the
situation described in the original bug report:  null index is
accepted by the alias, resolves to "_all" and gets applied to everything.

The REST tests, otoh, explicitly tested this bug as a real feature and therefore
passed.  The REST tests were modified to change this behavior.

Fixes #7863
Delegate write.lock to primary directory
Cat Recovery API: Reverting changes introduced with commit e1c75bae87300f5fd59c9a455f9a89298688df49

Adding these 2 headers to the CAT Recovery made the CI tests hanging for a loooong time.

Related to #8041
Updated paths to be inline with #8240
Docs: Update multi-get.asciidoc

Duplicate word

Closes #8228
Test: Change missing/null alias test to catch a request error, not a param error

Relates: #7863
Make indexQueryParserService available. Closes #8248
Tests: Refixed the put_alias tests

The missing/null index parameter is in the URL, not the body.
So it should be required, and throw a param error if not provided.

Relates #7863
Introduce elasticsearch.in.bat (i.e. es.in for Windows)

Break-out common functionality between elasticsearch.bat and service.bat
Relates #8237

(cherry picked from commit 87095e79534bcef97b2b275322c924bd96b34e3b)
Improve handling of multicast binding exceptions

In case the multicast binding fails (due to socket errors), abort zen
pinging code and throw a better error message
Relates #8225

(cherry picked from commit f819cff77a0ef95b340afc2f22e3464283803960)
Enabled overriding the request headers in the clients

One can set the headers sent with request by the clients by setting the `request.headers` setting. This commit enables overriding any such set headers directly on the requests.
Use the simpler command line syntax in the Debian init script

It's definitely not a blocker, but it would be nice to be consistent.

Closes #5033
Added missing percolate API parameters (percolate_routing, percolate_preference) to the REST API Spec

Closes #7173
[ENGINE] Add current translog ID to commit meta before closing

Today we simply close the IW when we have to open a new one if ie.
we change merge settings. Yet, the API is deprecated and under the hood
it commits the IW. For safety we should add the current translog ID and
use rollback instead to not wait for merges.
s/MapBuilder/singletonMap in InternalEngine