CDK-128: Repository get => load, drop => delete.

Renaming DatasetRepository methods for the API update. This introduces
AbstractDatasetRepository in the SPI for compatibility, which the two
repository implementations now inherit from.
CDK-128: Migrating FS repository test to new API.
CDK-128: Updating HCatalog to consume the new API.
CDK-128: Updating HCatalog tests for new repo API.
CDK-128: MetadataProvider save => create, update.

Splitting the MetadataProvider#save method into create and update for the API
changes. This introduces an AbstractMetadataProvider in the SPI for
compatibility, which the two implementations now inherit from. To correctly
send method calls from the old save method to either create or update, the
abstract base class needed to determine whether a descriptor already exists.
Currently, the only way to do this is by calling load. This is how the save
method is currently implemented, but it exposes the need in the API for an
exists call. If users need to know if a data set or descriptor exists, and the
API throws an Exception if they are wrong, then there needs to be a way to get
that information. This should be added with list().

The HCatalog implementation has also been updated to (correctly) throw a
MetadataProviderException when the HCatalog library can't open a table, rather
than a RuntimeException. Without this, the save implementation in
AbstractMetadataProvider doesn't work.