CDK-159: Adding initial URIPattern util.

This makes it possible to define URI patterns to parse options out of
URIs rather than parsing them by hand. It also includes a match method
that returns whether a URI can be successfully parsed by the pattern.
CDK-159: Adding URI registration.

This adds DatasetRepositories#register, which is called to register a
URIPattern with an OptionBuilder that can build DatasetRepository
instances for the URI pattern's options. Now, DatasetRepositories no
longer depends on any particular implementation and the Hive/HCatalog
implementation can be supported.

DatasetRepository instances are loaded via ServiceLoader (like
FileSystem implementations) and register one or more URIs by calling
DatasetRepositories#register in a static block. Implementations should
be listed in META-INF/services/com.cloudera.cdk.data.DatasetRepository
files in their containing jars.

The new OptionBuilder interface defines a method for building an
instance from a Map of options rather than through a series of method
calls. This is necessary because options from URIPatterns are returned
all as a single object, the result of the match.

TestDatasetRepositories is now filesystem/TestFileSystemURIs because it
is specific to the FileSystem implementation.
CDK-159: Moving URIPattern, OptionBuilder to SPI.

These shouldn't be in the main data package, they are to help
implementers.
CDK-159: Fixing ServiceLoader use.

ServiceLoader requires all implementing classes to have a no argument
constructor. That means that it isn't appropriate to use the real
service being loaded. This commit adds a Loadable interface to the SPI
with a load method that can be used to for registration. This improves
the registration process and reduces the amount of code in static
blocks.

Also, the POM was not set to include src/main/resources as a resource
folder. This is fixed so the service file is now correctly included in
the final jar.
CDK-159: Moving the FS Loader, URIBuilder to impl.

The Loader class must be public, but doesn't need to be exposed through
the API and URIBuilder needs to go along with it.
Merge pull request #19 from rdblue/cdk-159

CDK-159: Add a URI registration system