[CORE] Unify search context cleanup

Today there are two different ways to cleanup search contexts which can
potentially lead to double releasing of a context. This commit unifies
the methods and prevents double closing.

Closes #7625
[Stats] update action returns before updating stats for `NONE` operations

We keep around a noop stats indicating how many update operations ended up not updating the document (typically because it didn't change). However, the TransportUpdateAction update that counter only after returning the result. This can throw off stats check which are done immediately after, potentially causing test failures.

Closes #7639
[TEST] Don't print BWC test path - it's different on every machine
[TESTS]: create directory for heapdumps if not exists

Before the heapdump was either written in a file with the
directory name if the heapdump path ended without / or
not written at all if the path ended with /

closes #7645
Revert "[TEST] added @AwaitsFix to failing StringTermsTests while I work on a fix"

This reverts commit 18a713a2ae896e72c5821bf3f6d239ce634d1f52.
Revert "Aggregations: Adds ability to sort on multiple criteria"

This reverts commit bfedd11ffa4c48be0afd91793f491b0a8ff0ef8d.
[STORE] Write Snapshots directly to the blobstore stream

Today we serialize the snashot metadata to a byte array and then copy
the byte array to a stream. Instead this commit moves the serialization
directly to the target stream without the intermediate representation.

Closes #7637
Quiet BWC analysis test case for now.

See https://issues.apache.org/jira/browse/LUCENE-5927.
CORS: Disable by default

In order to deliver a more secure out-of-the-box configuration this commit
disables cross-origin resource sharing by default.

Closes #7151
Docs: Update plugins.asciidoc

add search by sql

Closes #7525
Core: Added the `index.query.parse.allow_unmapped_fields` setting to fail queries if they refer to unmapped fields.

The percolator and filters in aliases by default enforce strict query parsing.

Closes #7335
Simplify translog interface

get rid of readSource() entirely, it sucked, Operations should be able
to provide the source themselves.

No more TranslogStream headers, you are now required to pass an
StreamInput or StreamOutput for all operations, which means no extra
state is needed and no need to construct new versions when detecting the
version.

Read and write translog op sizes in TranslogStreams

Previously we handled these integers outside of the translog stream
itself, which was very unclean because other code had to know about
reading the size, or about writing the correct header sometimes.

There is some additional code in LocalIndexShardGateway to handle the
legacy case for older translogs, because we need to read and discard the
size in order to maintain the compatibility for the streaming
operations (they did not read or write the size for 1.3.x and earlier).

Additionally, we need to handle a case where the header is truncated
when recovering from disk

Use a NoopStreamOutput instead of byte arrays

Instead of writing translog operations to a temporary byte array and
then writing that byte array to the stream, we now write the operation
twice, once to a No-op stream to get the size, then again to the real
size.

This trades a little more CPU usage for less memory usage.
Fix ordering of Regex.simpleMatch() parameters

Previously we incorrectly sent them in the wrong order, which can cause
validators not to be run for dynamic settings that have been added
matching a particular wildcard.

Fixes #7651
[TEST] Ensure BWC test run even if node.mode=local is set

Today we throw an error if local transport is configured with BWC tests.
Yet, the BWC test need network to be enabled so test can just set the
required defaults.

Closes #7660
[TEST] Disable translog flush in CorruptedTranslogTests
[TEST] more debugging for GeoBoundsTests
Internal: make sure that the request context is always copied from REST to transport layer

Also renamed HeadersCopyClientTests since it tests a class that was renamed and removed randomization around client wrapper, as it now needs to be weapped all the time to copy the context, doesn't depend on useful headers that have been registered anymore.

Relates to #7610
[TEST] use local random instance rather than thread local version

This influences reprocucibility dramatically since it modifies the
test random sequence while it should just use the private random
instance.
[TEST] fix rounding issue
[TEST] Added basic test for InternalTestCluster reproducibility