MLT Query: Support for artificial documents

Previously, the only way to specify a document not present in the index was to
use `like_text`. This would usually lead to complex queries made of multiple
MLT queries per document field. This commit adds the ability to the MLT query
to directly specify documents not present in the index (artificial documents).
The syntax is similar to the Percolator API or to the Multi Term Vector API.

Closes #7725
[TEST] make sure that IndicesRequestTests is repeateable using the same seed

Remove the creation of a node client if not there before each test through setup method. `numClientNodes` makes sure that the client node gets created during suite cluster initialization.
1.3.3 release: add 1.3.4 version constant
[TEST] Use Shutdown API only if nodes are on 1.3.3 or newer to prevent shutdown problems
[BUILD] Release version should match latest version

This commit ensures that the latest version in our code is identical
to the project.version specified in the pom.xml file.
Nest original exception while creating NoShardAvailableActionException

Closes #7756
Fix optimize behavior with 'force' and 'flush' flags.

This does the following:
* Make 'force' flag only build a merge if the delegate MP returned no merges
* Add async handling for 'flush' when 'waitForMerges' is false
* Remove flush at the beginning of optimize.  This is something the user can
  do if they wish, before calling optimize.

closes #7886
closes #7904
closes #7920
Move forbidden api signature files to dev-tools.

This avoids the files showing up in the binary release, since .txt files
are copied.

closes #7917
closes #7921
[TEST] Mute MoreLikeThisActionTests#*ArtificialDocs
Core: go back to unbounded (scaling) thread pool for management threads (revert #7318)
1.3.4 release: add 1.3.5 Version constant
[TESTS] Be less strict about breaker child limit

Failing a parent breaker check is eventually consistent, so the test
could fail the parent limit, throw an exception, and before being
adjusted back down, increment more and throw a circuit breaking
exception on the child. This increases the child's limit, to ensure
we're only testing the parent limit.

It adds an additional assert to ensure that the breaker total is
correctly re-adjusted when the parent breaker has been tripped.
Docs: Document the most important changes to zen discovery.

Closes #7746
MLT Query/API: fix `minimum_should_match` bwc

Rounded to the nearest int allows to avoid issues in which (int) (0.59f * 100)
= 58, instead of 59%.
Changed the root rest endpoint ('/') to use cluster service

Instead of issuing a redundant cluster state request.

Closes #7899
Snapshot/Restore: Allow custom metadata to specify whether or not it should be in a snapshot

Before this change all persistent custom metadata is stored as part of snapshot. It requires us to remove repositories metadata later during recovery process. This change allows custom metadata to specify whether or not it should be stored as part of a snapshot.

  Fixes #7900
Docs: Typoes on the range filter page
PluginManager: Fix config path extraction from plugin handle

The PluginManager had a subtle bug in case the config directory was not in the
es home directory - which is always true in case of packaging.

This fixes the plugin manager, so that when specifying a path.home and a
path.conf variable on the commandline, the plugin manager acts
appropriately.
[TEST] Make mlt rest tests pass on a single node cluster
[TEST] Use canonical path for comparison rather than absolute path