Added more information to assertion in completion suggest tests
add explicit refresh post failure to test
log the hits post explicit refresh, and post explicit wait for green
Add asserting searcher to track searcher references

This assertion module also injects an AssertingIndexSearcher that
checks if our queries are all compliant with the lucene specification
which is improtant for future updates and changes in the upstream project.
detect JRE (vs JDK) and invalid JAVA_HOME

fixes #3739
Rename Engine#seacher() into Engine#acquireSearcher()

The name should reflect that the caller is responsible for
releaseing the searcher again.
Cleanup test classes and add Scope support for TestCluster

TestCluster can currently only be used in a globally shared scope.
This commit adds the ability to use the TestCluster in 3 different
scopes per test-suite. The scopes are 'Global', 'Suite' and 'Test'
where the cluster is shared across all tests, across all test methods or
not at all respectivly.
Subclasses of AbstractIntegrationTest (formerly AbstractSharedClusterTest)
can add an annotation if they need a different scope than Global (default):

```
  @ClusterScope(scope=Scope.Suite, numNodes=1)
```
This also allows to specify the number of shared nodes in that TestCluster
that are available when a test starts.

The cleanups in this commit include:

 - s/Elasticsearch/ElasticSearch/g on test classes
 - Move test classes in org.elasticsearch.test