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
Be stricter parsing ids for ids query

Adds a check to make sure that all ids in the query are either strings
or numbers. This is to prevent the case where a user accidentally
specifies:

"ids": [["1", "2"]]

(note the double array)

With this change, an exception will be thrown since the second "[" is
not a string or number, it is a Token.START_ARRAY.

Fixes #7686
Test: AckClusterUpdateSettingsTests - only set publish_timeout to 0 after green
[TEST] move fragile tests to BadApples rather than AwaitsFix
Test: AckTests.test*Warmer* - make sure at least one shard is started

The Put Warmer API executes the search encapsulated in the warmer before accepting it. This requires that at least one shard will be started. The tests used to use ensureGreen to check for that because of a publish timeout of 0 (needed to check the ack mechanism) that doesn't guarantee the shard is really started - just that the master has changed the CS to say so. This commit changes the ensureGreen to a the indexing of a single document.
[TEST] MLT malformed doc test fixed