[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.
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