initial facet refactoring
the main goal of the facet refactoring is to allow for two modes of facet execution, collector based, that get callbacks as hist match, and post based, which iterates over all the relevant hits
it also includes a some simplification of the facet implementation
fix check on which settings to change on
allow to access the global node settings in a static manner
Fix race condition in adding TimeoutClusterStateListener

Fixes #2658
add our own bloom filter implementation
uses more hash iterations, yet require less memory for the same fpp
relates to #2411
Expose CJKWidthTokenFilter and CJKBigramTokenFilter

Closes #2660
Fixed nested facets with filters.
refactoring getter/setters

Fixes #2657
Added Testcase and BugFix fixing #2626 where GeoShape intersects filter omitted matching docs.

SpatialPrefixTree#recursiveGetNodes uses an optimization that prevents
recursion into the deepest tree level if a parent node in the penultimate
level covers all its children.  This produces a bug if the optimization
happens both at indexing and at query/filter time.

This patch fixes the bug by disabling the optimization at indexing time
(to avoid adding overhead for query-heavy workloads).

See LUCENE-4770 for reference
Remove backported Lucene 4 spatial code in favor of the released version in Lucene 4.1
Added support for sorting by fields inside one or more nested objects.

The sorting by nested field support has the following parameters on top of the already existing sort options:

nested_path - Defines the on what nested object to sort. The actual sort field must be a direct field inside this nested object. The default is to use the most immediate inherited nested object from the sort field.
nested_filter - A filter the inner objects inside the nested path should match with in order for its field values to be taken into account by sorting. Common case is to repeat the query / filter inside the nested filter or query. By default no nested_filter is active.
Either the highest (max) or lowest (min) inner object is picked for during sorting depending on the sort_mode being used. The sort_mode options avg and sum can still be used for number based fields inside nested objects. All the values for the sort field are taken into account for each nested object.

Closes #2662
don't exclude services otherwise es.jar doesn't include the SPI information to load XBloomPostings
Improve stability of testSimpleAwareness test
Improve stability of shardsCleanup test
Make it simpler to determine which version of state was used to calculate health
Improve stability of UpdateNumberOfReplicasTests
Support trailing slashes on plugin _site URLs fix #2654
Add check for health timeout to shardCleanup test
When a node is leaving LocalDiscovery cluster, rerouting should be performed on the master node
Make sure that in SitePluginTests http client connects to the correct node and closes the node after the test