[TEST] Make sure that the facet fields exist.
[TEST] In PercolatorTests#testPercolateSorting_unsupportedField we need to be sure that the .percolator type exists
Enforce java version 1.7

When building elasticsearch, we now require to use java 1.7.

Maven will check that before compiling any class. If Java version is incorrect, you will get the following message:

```
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message:
Detected JDK Version: 1.6.0-65 is not in the allowed range [1.7,).
```

Closes #5428.
[Test] IndexLifecycleActionTests - set minimum master node earlier to make sure it's in effect when needed.
[Test] FullRollingRestartTests - correctly setting minimum_master_nodes

Also added a ElasticsearchIntegrationTest.setMinimumMasterNodes() helper function.
[Tests] QuorumLocalGatewayTests - Set mini_master_nodes earlier to make sure it has effect.  ClusterServiceTests - remove a thread.sleep in favor of awaitBusy
Close Directory / Store once all resources have been released

Currently we close the store and therefor the underlying directory
when the engine / shard is closed ie. during relocation etc. We also
just close it while there are still searches going on and/or we are
recovering from it. The recoveries might fail which is ok but searches
etc. will be working like pending fetch phases.

The contract of the Directory doesn't prevent to read from a stream
that was already opened before the Directory was closed but from a
system boundary perspective and from lifecycles that we test it seems
to be the right thing to do to wait until all resources are released.

Additionally it will also help to make sure everything is closed
properly before directories are closed itself.

Note: this commit adds Object#wait & Object@#notify/All to forbidden APIs
first review round