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
}
```
Docs: Tidied the upgrade indices docs
Rest: Added missing parameters to indices.upgrade
Spec: Removed flush and max_num_segments from indices.upgrade
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
[CORE] Simplify discovery node initialization if version is unknown

Today it's easy to use the wrong version when initializing DiscoveryNode
instances. This commit adds javadocs and a utility constant to
initialize DiscoveryNode instances if the the remotes node version is
unknown.

Closes #8051
Doc: Clarify that index.routing.allocation.total_shards_per_node means both primary and replica shards
Closes #8002
Clear the GroovyClassLoader cache before compiling

Since we don't use the cache, it's okay to clear it entirely if needed,
Elasticsearch maintains its own cache for compiled scripts.

Adds loader.clearCache() into a listener, the listener is called when a
script is removed from the Guava cache.

This also lowers the amount of cached scripts to 100, since 500 is
around the limit some users have run into before hitting an out of
memory error in permgem.

Fixes #7658
[TEST] Fix mapper collection switch key
Docs: Update object-type.asciidoc to make object type more explicit

Closes #7646
Internal: Fix serialization of PendingClusterTask.timeInQueue.

This parameter is serialized as a vLong while it could sometimes be negative.

Close #8077
fix mismatched curly bracket
Docs: Fix (another) Idaho spelling

Closes #7912
Test: make test less evil to not cause OOME