Allow iteration over MultiGetRequest#Item instances

Closes #3061
[Test] IndicesLifecycleListenerTests - added busy waiting for expected results (and improved error message)

The test currently uses ensureGreen to guaranty all shard allocations has happened. This only guaranties it from the cluster perspective and in some cases the nodes are not fast enough to implement the changes (which is what the test is about).
PUT /_aliases should accept a numeric routing value

Also added REST tests for setting index/search/routing
via the PUT /_aliases endpoint

Fixes #5465
[TEST] remove time upperbound from test - only for testing
Upgrade to Spatial4j 0.4.1 and JTS 1.13

Fixes #5279
Fix for Jenkins advice on SignificantTermsAggregatorFactory, changing a small switch statement to an if-else
[Doc] Updated docs for distance scripting
Updated docs for distance scripting and
added missing geohash distance functions
Closes #5397
category type should be called "category" instead of "field" in context suggester

Change according to documentation.
[BUILD] Add top execution hints to test phase

Added a ant task that prints the Top N most expensive tests after
each test run.
[DOCS] Documented the fact that binary fields are not stored by default
[Build] Skip topN hints if tests are skipped
[TEST] add @Slow annotations to bad apples
Add BoolFilterBuilder#hasClauses to be consitent with BoolQueryBuilder

Closes #5472
clean the query parse context after usage
that will make sure we don't have any parsers lying around that are no longer used
Changed the DateHistogram.Bucket to return the date key in UTC timezone

Closes #5477
Added extended_bounds support for date_/histogram aggs

By default the date_/histogram returns all the buckets within the range of the data itself, that is, the documents with the smallest values (on which with histogram) will determine the min bucket (the bucket with the smallest key) and the documents with the highest values will determine the max bucket (the bucket with the highest key). Often, when when requesting empty buckets (min_doc_count : 0), this causes a confusion, specifically, when the data is also filtered.

To understand why, let's look at an example:

Lets say the you're filtering your request to get all docs from the last month, and in the date_histogram aggs you'd like to slice the data per day. You also specify min_doc_count:0 so that you'd still get empty buckets for those days to which no document belongs. By default, if the first document that fall in this last month also happen to fall on the first day of the **second week** of the month, the date_histogram will **not** return empty buckets for all those days prior to that second week. The reason for that is that by default the histogram aggregations only start building buckets when they encounter documents (hence, missing on all the days of the first week in our example).

With extended_bounds, you now can "force" the histogram aggregations to start building buckets on a specific min values and also keep on building buckets up to a max value (even if there are no documents anymore). Using extended_bounds only makes sense when min_doc_count is 0 (the empty buckets will never be returned if the min_doc_count is greater than 0).

Note that (as the name suggest) extended_bounds is **not** filtering buckets. Meaning, if the min bounds is higher than the values extracted from the documents, the documents will still dictate what the min bucket will be (and the same goes to the extended_bounds.max and the max bucket). For filtering buckets, one should nest the histogram agg under a range filter agg with the appropriate min/max.

Closes #5224
Query Templates: Adding dedicated /_search/template endpoint

In order to simplify query template execution an own endpoint has been added

Closes #5353
Recovery API

Adds a new API endpoint at /_recovery as well as to the Java API. The
recovery API allows one to see the recovery status of all shards in the
cluster. It will report on percent complete, recovery type, and which
files are copied.

Closes #4637
Add new / missing version constants
Add simple escape method for special characters to template query

The default mustache engine was using HTML escaping which breaks queries
if used with JSON etc. This commit adds escaping for:

```
\b  Backspace (ascii code 08)
\f  Form feed (ascii code 0C)
\n  New line
\r  Carriage return
\t  Tab
\v  Vertical tab
\"  Double quote
\\  Backslash
```

Closes #5473