enhance performance of removeFields command
CDK-484: Clean up Registration and Datasets.

This cleans up the separation between the Registration and Datasets
classes. Registration handles URI matching and returns DatasetRepository
objects. Datasets handles any other operations that use those
repositories and the data. Load and view are now one method that returns
the appropriate object based on the URI.

This also expands Datasets, adding create, update, and delete methods
that call the appropriate method on the repository responsible for a
given URI. This is to enable the CLI to use Dataset URIs, solving the
problem of how to use more than one repository for CLI operations.
CDK-484: Add Datasets URI tests and Datasets#exists.

This also fixes inconsistencies in how view URIs are handled. Create or
load operations will return View objects for view URIs and create will
create the underlying dataset correctly. Delete, update, and exists will
reject view URIs with an IllegalArgumentException. Update applies to an
entire dataset, so it doesn't make sense to allow it to be applied to a
view. Delete and exists could be applied to views in the future, but
this is not implemented (and may not be)
CDK-481 Remove SchemaTool references to StorageKey

SchemaTool createOrMigrateSchemaDirectory required that all schemas come with a StorageKey object,
which is a reference to code that is no longer necessary. Remove that requirement and add a unit test
for SchemaTool.
Improved tests by removing static block and some duplicated code.
CDK-474: CrunchDatasets takes Dataset or View URI
CDK-474: delay loading Dataset from URI
CDK-353: Move location choice for FS datasets into the repo.

This is to enable temporary datasets, where the MetadataProvider is not
used. The FS MetadataProvider no longer sets the location, this is done
by the FS DatasetRepository. The repo will still use a different
location if the provider overrides the incoming location, which is the
case with Hive.
CDK-353: Allow dataset locations to be passed to the FS repo.

Imports need to store metadata using the FS repository that can be read
as a Dataset in MR, but pass in the location of existing data. This
removes the check that ensured location was not set. This used to throw
an exception, but is now allowed.
CDK-353: Add TemporaryDatasetRepository for MR.

This updates MR to use datasets from a temporary repository rather than
datasets in the target repository for temporary MR records and files.
Otherwise, jobs writing to Hive will create a dataset for each reduce
task attempt, which all send partition updates.

This introduces a TemporaryDatasetRepository and a
TemporaryDatasetRepositoryAccessor so that repository implementations
can supply a more appropriate repository. FS datasets return
repositories rooted in .temp/ underneath the repository's root
directory, and Hive's temporary repository does not interact with Hive.