Introduce stale cache timeout and improve reconnection handling.
Introduce stale cache timeout and improve reconnection handling.

Native ZK client library performs caching of ZK DNS host names, and
resets the cache either when client is initialized, or set_servers()
method is called. Since set_servers() is not exposed in zk ruby gem
we force re-init client object to make sure it always connects to
the current server IP address.

We also add a metric that allows us to monitor cache age, and if
necessary - trigger an alert. A worker with a stale cache will also
stop serving get requests if the cache contents are older than a
configurable threshold.

airbnb/optica,airbnb/optica