[TEST] randomly introduced a client node within test cluster

The default number of clients nodes is randomized between 0 and 1, applied to all cluster scopes (global, suite and test). Can be changed through the newly added `@ClusterScope#numClientNodes`.

In our tests we currently refer to nodes in a generic way. All the tests that either stop or start nodes rely on the fact that those nodes hold data though. Made that clearer as that becomes more important when introducing other types of nodes within the test cluster. Reflected this by adapting and renaming the following methods in `TestCluster`:

- ensureAtLeastNumNodes to ensureAtLeastNumDataNodes
- ensureAtMostNumNodes to ensureAtMostNumDataNodes
- stopRandomNode to stopRandomDataNode

and the following ones in `ElasticsearchIntegrationTest`:

- allowNodes to allowDataNodes
- dataNodes to numDataNodes.
- @ClusterScope#numNodes to numDataNodes
- @ClusterScope#minNumNodes to minNumDataNodes
- @ClusterScope#maxNumNodes to maxNumDataNodes

Added facilities to be able to deal with data nodes specifically, like for instance retrieve a client to a data node, or retrieve an instance of a class through guice only from data nodes.

Adapted existing tests to successfully run although there's a node client around.

Fixed _cat/allocation REST tests to make disk.total, disk.avail and disk.percent optional as client nodes won't return that info.

Closes #5949
[TEST] made sure nodeSettings method gets called for every node type, not only data nodes in case numDataNodes is specified.

This fixes a test ZenUnicastDiscoveryTests when running in network mode
Use URI vs URL accessing File from classpath.

URL escapes special characters such as spaces which
causes the resource to not be found when used to create
a File object.  Use URI.

Closes #5915
Added global ordinals terms aggregator impl that is optimized low cardinality fields.
Instead of resolving the global ordinal for each hit on the fly, resolve the global ordinals during post collect.
On fields with not so many unique values, that can reduce the number of global ordinals significantly.

Closes #5895
Closes #5854
Cut other aggregations over to use collectExistingBucket() if a bucket ord has been hit, that already exists.

Closes #5955
Cut p/c queries (has_child and has_parent queries) over to use global ordinals instead of being bytes values based.

Closes #5846
Added AwaitsFix
Aggregations parsing is too lenient.

Close #5827
include thread name when logging IndexWriter's infoStream messages
Provide meaningful error message if field has no fielddata type

closes #5930
[DOC] Fixed filtered_query typo
Fix computation of the missing ord (leftover of the ordinals change).
add thread name to logger message from IndexWriter's infoStream
Range/Term query/filter on dates fail to handle numbers properly
When providing a number (milliseconds since epoch, UTC), range and term query/filter don't handle it correctly and convert it to a string, that is then first tried to parse as a date
closes #5969
Added global ordinals based implementations for significant terms aggregator.

Closes #5970
[REST-SPEC] update to update test, to check for es-js error messages
disable using CBOR in randomized test infra
due to a bug in CBOR handling long values (test case to verify it is included), disalbe using CBOR in our tests till it gets fixed
Upgrade to Jackson 2.3.3
fixes the long value bug as well...
Fix setting of readerGen in BytesRefOrdValComparator on nested documents.

Sorting was broken on nested documents because the `missing(slot)` method
didn't correctly set the segment ordinal (readerGen), causing term ordinals to
be compared across segments.

Close #5986
Improve the way sub-aggregations are collected.

Sub-aggregations are currently collected directly, by just forwarding the
doc ID and bucket ordinal to them. This change adds the new BucketCollector
abstract class that Aggregator extends, so that we have more flexibility to
add implicit filters or buffering between an aggregator and its sub
aggregators.

Close #5975