Cut the following classes over to ImmutableOpenMap:
* MetaData
* IndexMetaData
* ClusterState
* IndexTemplateMetaData
Small cleanup
Added execution option to `range` filter, with the `index` and `fielddata` as values.
Deprecated `numeric_range` filter in favor for the `range` filter with `fielddata` as execution.

Closes #4034
use the proper abstraction of ImmutableOpenMap
we already use the open map / clone trick, might as well use the ImmutableOpenMap here
allow to parse directly the compressed mapping
Add more reporting to asserting index searcher
Only use -Dtests.jvm.argline instead of numbered options
Run tests with reduced stack size as we run in production
Cut DiscoveryNodes over to ImmutableOpenMap.
Updated Analyzing/Fuzzysuggester from lucene trunk

* Minor alignments (like setter to ctor)
* FuzzySuggester has a unicode aware flag, which is not exposed in the fuzzy completion request parameters
* Made XAnalyzingSuggester flags (PAYLOAD_SEP, END_BYTE, SEP_LABEL) to be written into the postings format, so we can retain backwards compatibility
* The above change also implies, that these flags can be set per instantiated XAnalyzingSuggester
* CompletionPostingsFormatTest now uses a randomProvider for writing data to check for bwc
Randomized CompletionSuggestSearchTests
Added unit test for current completion postingsformat
Make parsing of uri and body parameters consistent with single term vector api

uri parameters were not all parsed for the multi term vector request. This commit
makes sure that all parameters are parsed and used when creating the requests for the
multi term vector request.

In order to simplify both code and json request, the request structure now allows
two ways to use multi term vectors:

1. Give all parameters for each document requested in the docs array like this:

```
{
   "docs": [
      {
         "_index": "testidx",
         "_type": "test",
         "_id": "2",
         "terms": [
            "fox"
         ],
         "term_statistics": true
      },
      {
         "_index": "testidx",
         "_type": "test",
         "_id": "1",
         "terms": [
            "quick",
            "brown"
         ],
         "term_statistics": false
      }
   ]
}
```

2. Define a list of ids and give parameters in a separate parameters object like this:

```
{
   "ids": [
      "1",
      "2"
   ],
   "parameters": {
      "_index": "testidx",
      "_type": "test",
      "terms": [
         "brown"
      ]
   }
}
```

uri parameters are global parameters that are set for both cases. They are overwritten
by parameter definitions in the body.

Also, this commit adds the missing setParent(..) and setPreference(..) to TermVectorRequestBuilder.
[DOC] add doc for multi term vector api

closes #3998
Fix issue 3989

Multi term vector request never returned if shards for all requested documents
were non existent.

closes #3989
Include facets in the rest response.
Only print the warning about '.' in type, when it is not a percolator type.
[Docs] Added _source filtering to documentation

Relates to #3301
Fixing CompletionFieldMapper.isReservedChar() to take all relevant chars in account
Cat API: Add h parameter to apis, allowing to return columns and descriptions for them
closes #4262