Cat API: Improve help and execute help before sending server requests

* Force the cat API classes to have simple help available by extending from a AbstractCatAction
* Use a set binder on guice creation to create the help on node start up
* Make sure that the help/field info is returned without querying any data
Allow string fields to store token counts

To use this one you send a string to a field of type 'token_count'.  This
makes the most sense with a multi-field.
Remove bash specific calls

Make sure that every call in a shell script is supported by /bin/sh and not a bashism, like $()

Closes #4314
Wrong link to Token Filter
Fix broken test.
Add support for combining fields to the FVH

The Fast Vector Highlighter can combine matches on multiple fields to
highlight a single field using `matched_fields`.  This is most
intuitive for multifields that analyze the same string in different
ways.  Example:
{
    "query": {
        "query_string": {
            "query": "content.plain:running scissors",
            "fields": ["content"]
        }
    },
    "highlight": {
        "order": "score",
        "fields": {
            "content": {
                "matched_fields": ["content", "content.plain"],
                "type" : "fvh"
            }
        }
    }
}

Closes #3750
Added test logging
The registered queries were loaded after shard went to started phase, this resulted in the situation that the percolate api could be used while the registered queries still needed to be loaded from disk.
The newly added afterIndexShardPostRecovery method to InternalIndicesLifecycle, that the percolator now uses to trigger the loading of the registered queries will make sure that a shard doesn't go to started state before the queries have been loaded.
The percolate api (like other apis) will retry the execution on a different shard copy if a shard isn't in a started state preventing empty results if there registered queries to be loaded. Percolator tests fail sometimes for this reason.
- removed the getKeyAsString method from StringTerms (redundant method)
expose key and value iterators in ImmutableOpenMap
MetaData to use new iterator in ImmutableOpenMap
Introduce abstract superclass, group cat module bindings, and short-circuit helps.
Fix implementation of currentValueHash in FieldDataSource.Bytes.SortedAndUnique.

Close #4330
Fixed parsing bug in percolator, where everything after the `doc` object was skipped.

Closes #4325
Fail geohash_cell filter if geohash prefix is not enabled
closes #4335
Override DefaultExceptionHandler to filter out certain exceptions

We have the situation that some tests fail since they don't handle
EsRejectedExecutionException which gets thrown when a node shuts
down. That is ok to ignore this exception and not fail.
We also suffer from OOMs that can't create native threads but don't
get threaddumps for those failures. This patch prints the thread
stacks once we catch a OOM which can' create native threads.
Fixed incorrect results with `has_child` query with score mode if the parent type has nested object types. The inner objects (Separate Lucene docs) are also emitted as hits, which incorrectly decreased the count down short circuit mechanism in the `has_child` query.

Closes #4341
better error handling when processing refresh/update mapping
don't fail the whole bulk of updates, just the specific ones, and warn log it
Allow to disable sending a refresh-mapping to master node
When a node processed an index request, which caused it to update its own mapping, then it sends that mapping to the master. While the master process it, that node receives a state that includes an older version of the mapping. Now, there is a conflict, its not bad (i.e. the cluster state will eventually have the correct mapping), but we send for a refresh just in case form that node to the master.

With a system that has extreme cases of updates and frequent mapping changes, it might make sense to disable this feature. The indices.cluster.send_refresh_mapping setting can be introduced to support that (note, this setting need to be set on the data nodes)

Note, sending refresh mapping is more important when the reverse happens, and for some reason, the mapping in the master is ahead, or in conflict, with the actual parsing of it in the actual node the index exists on. In this case, the refresh mapping will result in warning being logged on the master node.

closes #4342
test fix