IMPALA-785: Finer-grained locking in ClientCacheHelper

ClientCacheHelper had a single lock that protected all members. This
lock was held while a connection attempt was made, with the obvious
consequence that slow connections held up all other uses of the cache.

This patch breaks the lock into three pieces: a lock for the whole
client cache structure, a lock for the cache for each host and a lock
for the structure that tracks all clients (whether in the cache or in
use). No locks are held during the call to OpenWithRetry().

This patch also renames a lot of variables, adds a lot of comments and
generally cleans up ClientCacheHelper.

Change-Id: I9cb740275d526d3d3236240ec1d4b71d262231d1
Reviewed-on: http://gerrit.ent.cloudera.com:8080/1438
Reviewed-by: Henry Robinson <henry@cloudera.com>
Tested-by: jenkins