[Bulk] Add blocking close method to BulkProcessor

Blocks until all bulk requests have completed.

Closes #4158
Closes #6314
[Bulk] Release semaphore again after close

The bulk processor tries to acquire all leases for the semaphore to wait
for all pending requests. Yet, we should release them afterwards again to
ensure we don't ever deadlock if there is a bug in the processor.
This commit also adds a testcase for this method
Return null info if service is not started

Closes #6906
[DOCS] Fixed typos
Term Vectors API: Computes term vectors on the fly if not stored in the index.

Adds the ability to the Term Vector API to generate term vectors for some
chosen fields, even though they haven't been explicitely stored in the index.

Relates to #5184
Closes #6567
[CLIENT] Unknown node version should be a lower bound

Today when we start a `TransportClient` we use the given transport
addresses and create a `DiscoveryNode` from it without knowing the
actual nodes version. We just use the `Version.CURRENT` which is an
upper bound. Yet, the other node might be a version less than the
currently running and serialisation of the nodes info might break. We
should rather use a lower bound here which is the version of the first
release with the same major version as `Version.CURRENT` since this is
what we officially support.

This commit moves to use the minimum major version or an RC / Snapshot
if the current version is a snapshot.

Closes #6894
[TEST] Randomize FS Translog implementation

Closes #6658
[TEST] Randomize Preference in search requests

Closes #6863
[DOCS]: Added link to saltstack module
Better message for invalid internal transport message format
closes ##6916
Docs: Add links to client helper classes for bulk/scroll/reindexing
Plugin Manager: Properly quote $JAVA in bin/plugin

The all new Oracle Java 7 on OSX has a space in its path
resulting in bin/plugin failing to work

Closes #5765
[TESTS] Switch more tests to ElasticsearchSingleNodeTest.

This avoids loading modules manually all the time.
Plugins: Introduced pluggable filter chain to be able to filter transport actions execution

It's now possible to inject action filters from plugins via `ActionModule#registerFilter` through the following code:

```
    public void onModule(ActionModule actionModule) {
          actionModule.registerFilter(MyFilter.class);
    }
```

Also made `TransportAction#execute` methods final to enforce the execution of the filter chain. By default the chain is empty though.

Note that the action filter chain is executed right after the request validation, as the filters might rely on a valid request to do their work.

Closes #6921
Netty: Refactoring to make MessageChannelHandler extensible

Small refactorings to make the MessageChannelHandler more extensible.
Also allowed access to the different netty pipelines

This is the fix after the first version had problems with the HTTP
transport due to wrong reusing channel handlers, which is the reason
why tests failed.

Relates #6889
Closes #6915
[TEST] an active shard might also be relocating
[TEST] Add SuppressSysoutChecks to DistributorDirectoryTest
[TEST] Temporarily ignore transport update tests.
Aggregations: Track scores should be applied properly for `top_hits` aggregation.

Closes #6934
[TEST] top_hits aggs with breath_first collect mode only fails if scoring is used (score based sort or track_scores)