CDK-367: Look up field position in key for mappings.

This adds KeySchema#position(String) to look up the position of a data
field in the key.
CDK-367: Update entity mapper test for key fields.

This tests that the fields may by out of order, have multiple partition
fields, and may not begin the key.
CDK-472: Add URIPattern#construct to create URIs for patterns.

The URIPattern#construct method takes a map of match data, like what is
produced by URIPattern#match, and produces a URI object that matches the
pattern. This supports constructing URIs that are known to match
patterns without knowing the pattern details. For example, constructing
a dataset URI from a dataset name and a repository URI depends on how
the URI pattern handles the dataset name. For some patterns, it is added
to the path, but some add the name as a query argument. This supports
both cases.
CDK-472: Add Registration support to look up dataset patterns.

This also adds a method to construct a dataset URI from a repo URI and a
dataset name. It should be moved to a URI builder class.
CDK-472: Fix NPE bugs in URIPattern
CDK-472: Add Datasets.URIBuilder

Adds an API for programatic building of Dataset/View URIs.

URIPattern implementation uses LinkedHashMap to preserve order of
options such that pattern.construct() will produce query params in a
predictable order.
CDK-472: Move URIBuilder to spi
CDK-472: JavaDoc and fomatting corrections

* Improved JavaDoc based on comments in https://github.com/kite-sdk/kite/pull/105
* Removed unnecessary whitespace changes in Datasets.java
CDK-453: Add Dataset#getUri.
CDK-453: Add Datasets#repositoryFor.

This adds Datasets.repositoryFor(URI) that returns the repository
responsible for a dataset URI. This makes it no longer necessary to add
the DatasetRepository URI to each DatasetDescriptor, which causes test
problems.
CDK-453: Update dataset input/output format configuration.
Add Copyright to URIBuilder.
CDK-453: Move URI construction into FS repositories.

Some tests were failing because the repository did not have a URI and
could not use it to construct dataset URIs. This moves the repo URI
building into the repository's constructor rather than just using the
builder. This ensures repositories will always have a URI that can be
parsed by URIPattern.
Allow the use of EmbeddedSolrServer.
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