Expose _explain via POST

Closes #2710
fix bug in StupidBackoffScorer were previous word and current word were flipped creating non-existing bigram
improve timing in test to wait for state with graceful timeouts
(yet, validate early and exit when relevant)
add info in test for actual search failures
always use the max score across the shards in suggest response
throw IAE if fieldname is null - Closes #2711
Fail in metadata parsing if the id path is not a value but rather an array or an object.

Closes #2275
Short Curcuit response if no indices exits and make sure listener is notified.

Closes #2692
Supporting sort modes `avg` and `sum` when sorting inside nested objects.
Previously this commit either sort modes `min` or `max` (depending on sort order) was used when sort modes `avg` and `sum` were picked.

Closes #2701
ensure that suggestion only added on reduce if they are present in the shard response
Throw IAE if indices is null or contains a null value.

Closes #2656
Throw correct ClassNotFoundException to debug classloader issues
more strict check before trying to parse and detect a string as a date
fixes #2694
Analyze API returns in YAML format if analyzed string begins with ---
fixes #2624
Correct order of routing and parent params for Get

The order in which routing and parent parameters are set is important.  The
routing parameter must be set first or it will overwrite the parent routing
value.
Query DSL: Filtered query to make query optional (defaults to mach_all)
closes #2718
lazy set the indices on the search request now that its validated
First working version of distributed result grouping