CDK-123: Merging Hive branch, updating for CDK-139.

CDK-139 adds a location to DatasetDescriptor, which is what CDK-123
needed in order to stop passing Dataset locations through a field on the
MetadataProvider instance, which created a brittle dependence between
the Hive MetadataProvider and DatasetRepository. Also, because the
FileSystemDatasetRepository no longer determines dataset location, and
instead uses whatever is set in the DatasetDescriptor, it can be used
without modification for external Datasets. For managed Datasets, the
HCatalogDatasetRepository is now a thin wrapper around the FS
DatasetRepository that avoids creating and deleting---handled by
Hive---but delegates to FS to load and do other tasks.

The other major change in this commit is to split the
HCatalogMetadataProvider into two implementations, one for external
(HCatalogExternalMetadataProvider) and one for managed datasets
(HCatalogManagedMetadataProvider). The shared methods still exist in
HCatalogMetadataProvider, from which both inherit. This is easier to
reason about than selecting behavior with a boolean field because they
need to do certain operations in different orders (create) and should
handle certain situations differently. Utility methods for CDK-Hive
translation are now in HiveUtils and have been extended for incoming
Parquet support.

The new MetadataProviders are working and passing standard tests with FS
repositories. This caught a bug where just setting the TableType to
EXTERNAL does not create an external table; a table parameter, EXTERNAL,
must be set to TRUE.

To do:
* Translate directly between Hive and CDK partitioning and add tests
* Add round-trip tests, via core's TestDatasetRepositories
CDK-139: Updating Crunch tests for FS repo changes.
Adding a String-URI method to Hive repo builder.
Adding Parquet support for Hive/Impala
CDK-142: Use schema literal for Hive unless hdfs:.
[squash me] Trying another parquet format.

parquet.hive.DeprecatedParquetInputFormat
squash me: fixing test setup to use boolean
CDK-139: Removing Configuration from descriptors.

This commit removes the optional Configuration from the
DatasetDescriptor interface. Instead, optional properties can be set on
the descriptor. To avoid assuming the FileSystem for a Dataset, the
metadata for FileSystem-based data sets now includes a property,
cdk.filesystem.uri, which is used to open the correct FileSystem for
each DatasetDescriptor.

Removing the Configuration from the descriptor interface requires adding
it back to FileSystemDatasetRepository and FileSystemDataset.Builder, so
that those classes can open the correct FileSystem from the descriptor's
FS URI.

This also exposed a bug in Parquet, where new Configuration() is called
in a constructor, which causes parquet to get the wrong file system and
fail tests. There isn't a constructor that takes a FS or a
Configuration, so I'm not sure how to fix this. It doesn't happen when
the default FS from the environment is used.

To do:
* Add general property storage to the hive tables.
* Also need to remember to remove deprecated methods before 0.8.0