Refactor hive functions into client, add thrift client

HiveClient interface for:
  - table_location
  - table_schema
  - table_exists
Implementation using `hive` invocations, and the thrift metastore
client.

Note: this changes the table_location function to take a dict instead of
a partition string