Re-define timeout of CacheClusters

This commit does a few things:

(1) A CacheCluster doesn't have its own timeout any more. It always waits for
all the servers in the cluster to return results or timeout themselves. It
makes things more complex if we have different timeout for the entire cluster
and for individual servers inside the cluster. Usually we just set the same
timeout anyway.

If some of the servers timeout, the cluster returns a partial results.

(2) When inquery for a timeout count, a CacheCluster returns the number of
timeout happens across all the servers in the cluster.

We could probably also expose timeout count of each individual server so the
user of the cluster can do fine-grained monitoring.

(3) We have an easier and more general API to query and reset timeout count.