Added generic cluster state update ack mechanism

Added new AckedClusterStateUpdateTask interface that can be used to submit cluster state update tasks and allows actions to be notified back when a set of (configurable) nodes have acknowledged the cluster state update. Supports a configurable timeout, so that we wait for acknowledgement for a limited amount of time (will be provided in the request as it curently happens, default 10s).

Internally, a low level AckListener is created (InternalClusterService) and passed to the publish method, so that it can be notified whenever each node responds to the publish request. Once all the expected nodes have responded or the timeoeout has expired, the AckListener notifies the action which will return adding the proper acknowledged flag to the response.

Ideally, this new mechanism will gradually replace the existing ones based on custom endpoints and notifications (per api).

Closes #3786
Put warmer api to support acknowledgements

Added support for acknowledgements in put warmer api using the generic mechanism introduced in #3786

Closes #3831
Delete warmer api to support acknowledgements

Added support for acknowledgements in delete warmer api using the generic mechanism introduced in#3786

Closes #3833
Added simple count down class that allows to be fast forwarded

Closes #3910