Add assertion that index creation & deletion is acknowledged
Suggest should ignore empty shards
From #3469.
When running suggest on empty shards, it raises an error like:

```
"failures" : [ {
      "status" : 400,
      "reason" : "ElasticSearchIllegalArgumentException[generator field [title] doesn't exist]"
    } ]
```

We should ignore empty shards.

Closes #3473.
Fix typo
* Check if size is set if sort is used, if not throw exception.
* Fix reduce error when reducing shard responses.
* Short circuit reduce phase when possible (single matches & no matches)
Prevent Phrase Suggester from failing on missing fields.

Unless the field is not mapped phrase suggester should return
empty results or skip candidate generation if a field in not in
the index rather than failing hard with an illegal argument exception.
Some shards might not have a value in a certain field.

Closes #3469
Removed static versions of MatchAllDocsQuery

If a static cached version of MatchAllDocsQuery is used through for
instanst the `query_string` together with a boost like `*:*^2.0` the
globally used version is modified since queries are not immutable and it's
boost variable can change at any time. Holding on to queries that are modifiable
is risky and should not be done in a global scope.
This commit also adds tests for constant scores from `constant_score` query.

Closes #3521
Better exception handling in actions when forking to a thread pool
An execution on a thread pool might be rejected due to its settings, have better handling in those cases across the actions we have.
closes #3524
Added a debug log when sending an mapping updated request to master
reduce max replica in test to stabelize with low number of available nodes
Fix small javadoc typos for IndexShardRoutingTable
Added support for random_score function:

 * can be used to return matching results in random order

 Closes #1170
fixed RandomScoreFunctionTests
Fix RandomScoreFunctionTests to be more reproducible.
Changed the default of SourceFieldMapper's includes & excludes to be null, to support a "not specified" state, which is important now that they are update-able & merge-able
Thread Pool: Remove blocking type option
The blocking thread pool type is not recommended to be used, since it will end up blocking the IO thread most times when executing, which is not recommended (other operations will then stall as well).
closes #3531
Introducing Aggregations Module

Initial commit for the aggregation module. There are four main constructs for each aggregation:

 * aggregation - represents the outcome of the aggregation
 * aggregator - the request scope construct that computes the aggregation
 * aggregator factory - creates an aggregator of a specific type (can be configured for that type)
 * aggregator parser - parses the request xcontent and creates the appropriate aggregator factory

 There are two types of aggregations (and therefore, there are two types of aggregators):

  * Calc - an aggregation that computes counts/stats across a set of documents (eg. avg, sum, min, max,...)
  * Bucket - an aggregation that creates buckets over a set of documents, where each buckets effectively defines a set of documents (eg. terms, range, histogram, missing, filter, ...)

  The bucket aggregators can be seen as compound aggregators which can contain other aggregators. The aggregators contained in a bucket aggregator will be applied for each of the buckets that are created byt he bucket aggregator.
initial commit of the value source based implementation
second commit
third commit
cleanup & refactoring 1