Generate filter/project methods only with required arguments

The compiler was previously generating them with all inputs across all filters and
projections as arguments, regardless of whether they were needed in the method body
Minor cleanup in ExpressionKey

Reuse SubExpressionExtractor and make code more readable
Create interface for HiveMetastore
Move HiveMetastore to metastore package
Add InMemoryHiveMetastore
Run test queries with Hive
Change benchmarks to be reusable in connectors
Add query benchmarks to Hive
Add fast smoke test for distributed Hive

Disable full Hive distrbuted tests in normal build as they are simply too slow