Extended ActionFilter to also enable filtering the response side

Enables filtering the actions on both sides - request and response. Also added a base class for filter implementations (cleans up filters that only need to filter one side)

Also refactored the filter & filter chain methods to more intuitive names
Docs: Update cardinality-aggregation.asciidoc

Closes #7516
[TEST] Close input stream in test to not upset windows
RestAPI: Change validation exceptions to respond with 400 status instead of 500.

Validation errors are clearly in the realm of client errors (a program
with the request).  Thus they should return a 4xx response code.

closes #7619
Docs: Wrong class name

Was QFilterBuilders, should be FilterBuilders.

Closes #7611
Docs: Added explanation of how to do multi-field terms agg

Closes #5100
Docs: Update span-not-query.asciidoc

The example given does not clearly explain what the query does.

Closes #7049
Docs: Adds missing explanation to multi-match

Closes #7281
Docs: Update prefix-query.asciidoc

Typo (missing word)

Closes #7283
Docs: Clarify that refresh on get/update/delete just refreshes the relevant shards

Closes #7359
Docs: Update scripting.asciidoc

Clarify that doc[...] does not return objects

Closes #7384
Docs: Clarify that refresh on update just refreshes the relevant shards
Docs: Update regexp-syntax.asciidoc

Closes #7419
Docs: fixed typo

Closes #7544
Core: remove built-in support for Lucene's experimental codecs

Lucene's experimental codecs (from the codecs module) do not provide
backwards compatibility and are free to change from release to
release.  When they do change, they typically cannot in general read
older indices and the resulting exceptions look like index corruption.
So, we are removing built-in support for them to prevent applications
from choosing one and then seeing strange exceptions on upgrade.

Closes #7566

Closes #7604
Doc: Fixes node client section name on Java API Doc

Closes #7539
[SEARCH] Execute search reduce phase on the search threadpool

Reduce Phases can be expensive and some of them like the aggregations
reduce phase might even execute a one-off call via an internal client
that might cause a deadlock due to execution on the network thread
that is needed to handle the one-off call. This commit dispatches
the reduce phase to the search threadpool to ensure we don't wait
for the current thread to be available.

Closes #7623
[TEST] added debug info to GeoBoundsTests to try to solve build issue
[TESTS] Add explicit mappings to IndexAliasesTests.testSearchingFilteringAliasesSingleIndex

This makes sure that all shards know about the `_uid` field.
Aggregations: Adds ability to sort on multiple criteria

The terms aggregation can now support sorting on multiple criteria by replacing the sort object with an array or sort object whose order signifies the priority of the sort. The existing syntax for sorting on a single criteria also still works.

Contributes to #6917