Fix potential race condition in ServerStatus
Move AsyncHttpClientProvider into correct package
Add Indexer#isConnectedAndHealthy method
BatchedElasticSearchOutput should only flush when Elasticsearch is up

To avoid unnecessary exceptions during shutdown or when Elasticsearch is down,
BatchedElasticSearchOutput should only flush the message buffer if the cluster
state is GREEN or YELLOW.
Check Elasticsearch cluster health in BufferSynchronizerService

The BufferSynchronizerService now only waits for the buffers and caches to drain
if the Elasticsearch is available (i. e. cluster state is not RED) and there is
at least one data node to write to.
Try to speed up GracefulShutdown and to fail fast

There were some possibilities in `GracefulShutdown` to speed up a graceful
shutdown of the system. Instead of waiting for an Elasticsearch cluster to
reappear we now fail fast (because there is no use in trying to flush buffered
messages to a non-existing Elasticsearch cluster).

Additionally `ServerStatus` has been refactored and now offers distinct methods
for lifecycle changes instead of an opaque (and tainted with side-effects)
`setLifecycle` method.

Fixes #480