DRILL-4126: Enable caching for HiveMetaStore access when impersonation is enabled. Change table cache in metastore client.
1) HiveSchemaFactory maintain one metastoreClientWithAuth per user.
2) Put the hive metastore object caches in DrillHiveMetaStoreClient.
3) Use LoadingCache to store the set of clients for impersonation.
4) Use flat level cache for tables in DrillHiveMetastoreClient.