Add RamUsageEstimator assertion to ElasticsearchIntegrationTest
estimator#afterLoad should be invoked once only per reader.

It was being invoked once per reader and parent type combination resulting in more memory being reported to the circuit breaker than actually being used in field data.
Add tracking of allocated arrays.

The BigArrays utility class is useful to generate arrays of various sizes: when
small, arrays will be allocated directly on the heap while larger arrays are
going to be paged and to recycle pages through PageCacheRecycler. We already
have tracking for pages but this is not triggered very often since it only
happens on large amounts of data while our tests work on small amounts of data
in order to be fast.

Tracking arrays directly helps make sure that we never forget to release them.

This pull request also improves testing by:

 - putting random content in the arrays upon release: this makes sure that
   consumers don't use these arrays anymore when they are released as their
   content may be subject to use for another purpose since pages are recycled

 - putting random content in the arrays upon creation and resize when
   `clearOnResize` is `false`.

The major difference with `master` is that the `BigArrays` class is now
instanciable, injected via Guice and usually available through the
`SearchContext`. This way, it can be mocked for tests.
Use FieldMapper to create the low level term queries in CommonTermQuery

Closes #5258
Move master to Java 1.7

Closes #5267
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:

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

also removes AllocationExplanation from cluster state

Closes #2483
Closes #5169
Remove trace logging from testBreakerWithRandomExceptions()
Improve error reporting on breaker stats assertion
Update Eclipse configuration to Java 1.7.
Add assertion to not forget to replace reflection with the new FilterAtomicReader.unwrap.
Move ensureEstimatedStats() after index wiping to ensure everything is cleaned up once the index is removed
Added more trace and debug logging
[TEST] more assertAcked in SharedClusterShapshotRestoreTests
Add plugin class space isolation

Each plugin is now loaded in its own classloader to prevent class
conflicts when loading different versions of the same library. It
 is enabled by default and is configurable through
 `plugins.isolation` settings .Additionally, each plugin can
change its own isolation through the `isolation` property in
`es-plugin.properties`- if not specified, the global setting in
ES applies.

Closes #5261
[TEST] Add version and master_node parameter to _cluster/state
[TEST] Dynamically extract node ID for test
fix failing IsolatedPluginTests (change numNodes to 0)

(cherry picked from commit f26a369a78ade032df44fcf331f378644f74b9ea)
[DOCS] Fixed added[] tag version number
make test assertions relative in IsolatedPluginTests

relates to #5621
[TEST] skip explain reroute REST test until param substitution is implemented