The mpercolate api rest endpoint should also support http get.
Fixed bug (NPE) in mpercolate api, defaults from percolating existing documents where also applied for the regular percolate api, these defaults were none existing (null).
[DOCS] Fixed percolate docs errors
Randomize exceptions when file is deleted while still open.

This somehow emulates a behavior on windows but we should test the
other code paths as well.
[DOC] Improve documentation on search stats groups

Document the ability to return all search statistics groups and provide examples of returning search statistics for groups.
Refactored indices aliases api to make use of the new recently introduced generic ack mechanism
Refactored open/close index api to make use of the new recently introduced generic ack mechanism
Refactored delete index api to make use of the new recently introduced generic ack mechanism

Side note: the double notification from each node (one after deleting from metadata, one after deleting from file system) that was in place is not needed anymore, as each node returns the ack in the clusterStateProcessed, which gets called after all the listeners (one of which actually deletes from file system)
Refactored put mapping api to make use of the new recently introduced generic ack mechanism
Refactored create index api to make use of the new recently introduced generic ack mechanism
Introduced metadata service for cluster reroute, cluster update settings, put warmer and delete warmer

Helps consistency between the different apis that modify the cluster state and support acknowledgements
Strengthen the acknowledgement api and cluster state update operations

Introduced TransportClusterStateUpdateAction base class that extends TransportMasterNodeOperationAction to remove boiler plate code from all subclasses. Introduced abstract ClusterStateUpdateActionListener class that implements ClusterStateUpdateListener.

Made AckedClusterStateUpdateTask an abstract class and added its default subcass that is used in most of the cases (AckedDefaultStateUpdate) unless a specific ClusterStateUpdateResponse subclass (that holds more than the only acknowledged flag) is needed. This allowed to remove boiler plate code from all MetaDataServices (onResponse, onTimeout, ackTimeout, masterNodeTimeout, onFailure and so on)

Forced also implementing toString on all ClusterStateUpdateRequest, used for logging (debug level on the action package) in case something goes wrong updating the cluster state. Previously only some of the apis did this.

The only api that hasn't been fully migrated yet is the delete index api (TransportDeleteIndexAction doesn't subclass yet TransportClusterStateUpdateAction) as it supports multiple indices but submits a different cluster state update per index. We might wanto to keep it like this for now as it also locks the index during the delete operation.
Moved ClusterStateUpdate(Request|Response|Listener|ActionListener) to action.support.master package
Unified cluster state update operations for what concerns the rest layer

Added common method that read the timeout and master_timeout parameter from the rest request and sets them to the AcknowledgedRequest

Made sure that the rest layer doesn't have its own default values for timeout and master_timeout (used the ones already set in the request class)

Moved Put Alias and Delete Alias over to the new AcknowledgedRestListener

Made ok and acknowledged XContentString constants

Fixed unchecked cast in rest put/delete warmer
Moved put/delete index template to new cluster state update structure

As a side note both api read the timeout parameter and return the acknowledged flag, although they don't support acknowledgements. The timeout parameter is ignored and the acknowledged flag is always true.
Kept that behaviour for now. The difference with the other api is the type of ClusterStateUpdateTask submitted, which is TimeoutClusterStateUpdateTask instead of AckedClusterStateUpdateTask. The rest of the code could be migrated anyway to the new structure.