[TEST] randomly introduced a client node within test cluster

The default number of clients nodes is 1, applied to all cluster scopes (global, suite and test). Can be changed though 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`:
- `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.