Now we pass the hive client to hive targets in the constructor

Instead of relying on global client methods, this allows us to pass through any client implementation of our choosing.

This is nice because it allows the use of the metastore client isolated to explicit targets, as some things don't work properly with the metastore client (like getting the schema for a table defined by it's SerDe instead of the user).

This might break some downstream projects because I've removed the package-level functions. This change was pretty easy to update for in our codebase, but certainly open to debate on adding them back if it seems problematic to you folks / others.