Doc fix explaining resynchronization with the Cancel command.

Added line explaining resync process to Reroute/Cancel command.

Closes #5025
Merge pull request #5055 from seang-es/fix/5025

Doc fix explaining resynchronization with the Cancel command.
[DOCS] Add GridFS repository community plugin
[TEST] Removed nested quantifier in cat.allocation regex and made node name regex more liberal
Fixed parsing time zones as numeric value in DateHistogramParser

Closes #5057
Bulk process of shard started/failed should not execute on already processed events
closes #5061
add version and master_node flags to cluster state
[TEST] Fixed delete/50_refresh REST test to work against multiple nodes

delete/50_refresh tests per shard refresh using refresh:true in delete api. We might run into troubles though if we have a replica that gets initialized after a doc was indexed and deleted, without a refresh, as that doc won't be found when searching against that specific replica shard (as a refresh happens automatically before a replica gets exposed as started).
[DOCS] Added a table with 0.90/1.0 compatibility and corresponding instructions
[TEST] Add basic test for /cat/shards/{index}

Basic REST test for rendering the cat/shards endpoint.
[TEST] Fixed get_source/60_realtime_refresh REST test to work against multiple nodes

Replaced also wait for yellow with wait for green when using no replicas.

get_source/60_realtime_refresh tests per shard refresh using refresh:true and realtime:true in get api. We might run into troubles though if we have a replica that gets initialized after a doc was indexed without a refresh, as that doc will be found when searching against that specific replica shard (as a refresh happens automatically before a replica gets exposed as started).
[TEST] moved routing REST tests to 0 replicas

REST tests get run against either 1 node or multiple nodes. Wait for yellow with replicas>0 is not enough when running against multiple nodes as replicas shard might get initialized  during testing, which can cause timing issues.
Add `explain` flag support to the reroute API

By specifying the `explain` flag, an explanation for the reason a
command can or cannot be executed is returned. No allocation commands
are actually performed.

Returns a response similar to:

{
  "explanations" : [ {
    "command" : "cancel",
      "parameters" : {
        "index" : "decide",
        "shard" : 0,
        "node" : "IvpoKRdtRiGrQ_WKtt4_4w",
        "allow_primary" : false
      },
      "decisions" : [ {
        "decider" : "CancelAllocationCommand",
        "decision" : "YES",
        "explanation" : "..."
        } ]
     }, {
      "command" : "move",
      "parameters" : {
        "index" : "decide",
        "shard" : 0,
        "from_node" : "IvpoKRdtRiGrQ_WKtt4_4w",
        "to_node" : "IvpoKRdtRiGrQ_WKtt4_4w"
       },
       "decisions" : [ {
         "decider" : "SameShard",
         "decision" : "NO",
         "explanation" : "shard cannot be allocated on same node [IvpoKRdtRiGrQ_WKtt4_4w] it already exists on"
       },
       etc
       ]
  }]
}

Closes #2483
Throw exception for invalid Decision type
Use underscore case instead of camel case for Decider names
Switch to static writeTo/readFrom in order to remove empty constructor
No need for commandName, we can always get it from command
Remove nullable RoutingExplanations serialization and null check
Add explain flag to reroute REST API spec
Ensure green after creating index with 0 replicas in Reroute test