[CORE] Log if CircuitBreaker is tripping

Today we only throw an exception which might not be logged at all. This
commit adds debug logging if we are tripping a CB.

Closes #8050
Spec: Added human flag to indices.get_upgrade
Add link to new upgrade docs from indices page.

See #7922.
Add forgotten include for upgrade docs.

See #7922
[TEST] bump benchmark apis version to 2.0.0
Internal: fixed bw comp in ShardSearchTransportRequest

Original indices were introduced in 1.4.0.Beta1 as optional, preceded by a boolean flag that told whether they were empty or not. We have to keep serializing as optional only when reading and writing from/to 1.4.0.Beta1, although the original indices are not optional whenever we go and serialize the request they belong to (which is why the boolean got removed in 1.4.0).
Mapper: Throw exception if null_value is set to null

The mapping parser should throw an exception if "null_value" is set to `null`.

Fixes #7273

```bash
PUT /foo
{
  "mappings": {
    "bar": {
      "properties": {
        "exception": {
          "null_value": null,
          "type": "integer"
        }
      }
    }
  }
}
```
```
{
   "error": "MapperParsingException[mapping [bar]]; nested: MapperParsingException[Property [null_value] cannot be null.]; ",
   "status": 400
}
```
Aliases: Throw exception if index is null when creating alias

Fixes a bug where alias creation would allow `null` for index name, which thereby
applied the alias to _all_ indices.  This patch makes the validator throw an
exception if the index is null.

```bash
POST /_aliases
{
   "actions": [
      {
         "add": {
            "alias": "empty-alias",
            "index": null
         }
      }
   ]
}
```
```json
{
   "error": "ActionRequestValidationException[Validation Failed: 1: Alias action [add]: [index] may not be null;]",
   "status": 400
}
```

The reason this bug wasn't caught by the existing tests is because
the old test for nullness only validated against a cluster which had
zero indices.  The null index is translated into "_all", and since
there are no indices, this fails because the index doesn't exist.
 So the test passes.

However, as soon as you add an index, "_all" resolves and you get the
situation described in the original bug report:  null index is
accepted by the alias, resolves to "_all" and gets applied to everything.

Fixes #7976
Revert "Aliases: Throw exception if index is null when creating alias"

This reverts commit ee857bc07302b5bfcb327b3be9d07d9c6de28254.
Docs: Tidied the upgrade indices docs
Rest: Added missing parameters to indices.upgrade
Spec: Removed flush and max_num_segments from indices.upgrade
Docs: Add missing link to the 2.0 migration guide.
Tests: Add assumption to restrict upgrade test from running against
invalid backcompat versions.
Throw parsing exception if terms filter or query has more than one field

Closes #5014
Admin: Fix upgrade logic to work on lucene major version differences.

Also improved upgrade tests, and added test against static ES 0.20 index
which used Lucene 3.6.

closes #8013
Temporarily ignore 0.20 upgrade test until it can be made less flaky.
[TEST] Remove explicit network mode - not needed here
Logging: add shard id to logging in InternalIndexService.removeShard
Test: re-enable testUpgrade_0_20