Update forbidden-apis to 1.5.1 and remove the relaxed missing classes error.
Merge remote-tracking branch 'upstream/master'
Merge branch 'master' of https://github.com/elasticsearch/elasticsearch
Merge branch 'master' of https://github.com/elasticsearch/elasticsearch
Update forbidden-apis to 1.6
Update forbidden-apis to 1.6
Update forbidden-apis to 1.6
Merge branch 'master' of https://github.com/uschindler/elasticsearch into forbiddenapis-1.6-update
Fix for failing BasePolygonBuilder
Internal: changed every single index operation to not replace the index within the original request

An anti-pattern that we have in our code, noticeable for java API users, is that we modify incoming requests by replacing the index or alias with the concrete index. This way not only the request has changed, but all following communications that use that request will lose the information on whether the original request was performed against an alias or an index.

Refactored the following base classes: `TransportShardReplicationOperationAction`, `TransportShardSingleOperationAction`, `TransportSingleCustomOperationAction`, `TransportInstanceSingleOperationAction` and all subclasses by introduced an InternalRequest object that contains the original request plus additional info (e.g. the concrete index). This internal request doesn't get sent over the transport but rebuilt on each node on demand (not different to what currently happens anyway, as concrete index gets set on each node). When the request becomes a shard level request, instead of using the only int shardId we serialize the ShardId that contains both concrete index name (which might then differ ffrom the original one within the request) and shard id.

Using this pattern we can move get, multi_get, explain, analyze, term_vector, multi_term_vector, index, delete, update, bulk to not replace the index name with the concrete one within the request. The index name within the original request will stay the same.

Made it also clearer within the different transport actions when the index needs to be resolved and when that's not needed (e.g. shard level request), by exposing `resolveIndex` method. Moved check block methods to parent classes as their content was always the same on every subclass.

Improved existing tests by randomly introducing the use of an alias, and verifying that the responses always contain the concrete index name and not the original one, as that's the expected behaviour.

Added backwards compatibility tests to make sure that the change is applied in a backwards compatible manner.

Closes #7223
[TEST] don't use multiple names (e.g. aliases) pointing to the same concrete index when using indexRandom

indexRandom will try to delete bogus documents multiple times since they get tracked by indexOrAlias/id, and after the actual deletion any other attempt throws error and fails the test
plugins: `bin` and `config` only plugins do not install correctly

When installing a bin only plugin, it is identified as a site plugin.

A current workaround would be to create in the zip file another empty dir. So if you have:

* `bin/myfile.sh`
* `empty/empty.txt`

the `bin` content will be extracted as expected.

Closes #7152.
[Test] fix plugins: `bin` and `config` only plugins do not install correctly

Related to #7152.
Query DSL: Cache range filter on date field by default

A range filter on a date field with a numeric `from`/`to` value is **not** cached by default:

    DELETE /test

    PUT /test/t/1
    {
      "date": "2014-01-01"
    }

    GET /_validate/query?explain
    {
      "query": {
        "filtered": {
          "filter": {
            "range": {
              "date": {
                "from": 0
              }
            }
          }
        }
      }
    }

Returns:

    "explanation": "ConstantScore(no_cache(date:[0 TO *]))"

This patch fixes as well not caching `from`/`to` when using `now` value not rounded.
Previously, a query like:

    GET /_validate/query?explain
    {
      "query": {
        "filtered": {
          "filter": {
            "range": {
              "date": {
                "from": "now"
                "to": "now/d+1"
              }
            }
          }
        }
      }
    }

was cached.

Also, this patch does not cache anymore `now` even if the user asked for caching it.
As it won't be cached at all by definition.

Added as well tests for all possible combinations.

Closes #7114.
Test: Allow CliTool to write out stacktraces

In order to have the possibility of debugging on the command line, the user
now can either set the es.cli.debug system property
which results in stack traces being written to to the terminal.

Closes #7222
Java client API: CreateIndexRequestBuilder.addMapping throws IllegalStateException if you add same type more than once

Previously, it would silently overwrite the previous mapping, which was trappy.

Closes #7231

Closes #7243
Core: Store index creation time in index metadata

This change stores the index creation time in the index metadata when an index is created.  The creation time cannot be changed but can be set as part of the create index request to allow for correct creation times for historical data.

Closes #7119
Geo: fixes computation of geohash neighbours

The geohash grid it 8 cells wide and 4 cells tall. GeoHashUtils.neighbor(String,int,int.int) set the limit of the number of cells in y to < 3 rather than <= 3 resulting in it either not finding all neighbours or incorrectly searching for a neighbour in a different parent cell.

Closes #7226
Internal:  adjusted visibility to package private for BroadcastShardOperationRequest subclasses and their constructors

Also replaced the String,int pair for index and shard_id with ShardId object that holds the same info and serialized it the same way too.

Closes #7235
Remove `numeric_range` filter

As done with #4034, `numeric_range` filter has been deprecated since 1.0.0.

Closes #7108.