Batch partition loading from the metastore

OK here is the initial implementation that does batching based on time (a new parameter ``hive.metastore-partition-load-batch-interval`` is introduced) to address #1981 . Currently each hive-metastore thread does batching independently (instead of using locking and letting one thread do the batching as the same ``BackgroundCacheLoader`` is shared by all metastore threads). For keeping the state this implementation uses thread local variables to get rid of synchronization & make the code more concise. Once the code is ready to merge I will update the docs with the new parameter.
There's a flaw with the way this is implemented: if the number of pending loads is < batch size and batchLoadIntervalMillis hasn't elapsed yet and reload is never called again (or for a long time), any pending key will be left in limbo until someone calls reload again.