CDK-140: Fix bugs in URIPattern.

1. Opaque patterns should not match non-opaque URIs

This was causing the relative URI patterns to match non-relative cases
by consuming the host. The non-opaque pattern did not match becasue
there were too few path components, but the opaque/relative version did
match because the authority section was consumed as part of the relative
path.

2. Lone glob pattern should not match an ending /

The file:/*path URI was returning path="" for file:/ even though there
is no path component. This caused reconstructed dataset URIs to have an
extra /: file://namespace/dataset
CDK-140: Add namespaces to kite-data-core.

This adds namespaces to the DatasetRepository interface and the
FileSystem dataset implementation. Existing tests in kite-data-core are
passing, but not all test cases have been updated to correctly test
namespaces.
CDK-140: Add namespace to PartitionListener.
CDK-140: Add namespace to dataset name compat check.
CDK-140: Fix requested location in provider test.

Hive attempts to create the location, so it needs to be a valid
location with the minicluster's authority section.
CDK-140: Update Hive for namespaces.

Managed datasets use the same URI pattern, with an added default for the
namespace option, "default". External dataset URI patterns now have a
required namespace part of the path. This will currently cause external
table lookups to fail unless the containing folder is named default.

Major changes are:
* Added createDatabase(String) and getAllDatabases() to HCatalog
* Refactored list into namespaces() and datasets(String)
* External datasets now correctly respect requested locations
CDK-140: Add backward-compatibility for Hive external datasets.

This adds a method that resolves the namespace that should be used. The
requested namespace is always used if the table exists in that
namespace. Otherwise, the default namespace is used if the table exists
in the default namespace and its location is where the data would have
been stored if the table was created before namespaces.

This moves the FS update descriptor checks into Compatibility so that
those checks can be used when creating a new table that is backed by
data from a table created before adding namespaces. Create in a new
namespace succeeds if the descriptor is compatible with the existing
data.

Error messages in HCatalog are also more helpful and include db and
table names.
CDK-140: Update HBase to pass namespaces.

HBase doesn't currently support namespaces, this just updates the API.
Any namespace that isn't "default" will be rejected. This will be the
behavior for HBase versions before 0.96, and support for table
namespaces should be added for 0.96 and later.
CDK-140: Add namespace support to MR and Crunch integration.
CDK-140: Add namespace option to flume appender.
CDK-140: Add backward-compatibility to FS datasets.

This adds backward-compatibility to the FS metadata provider. There is
no need for more backward-compatible checks as long as the metadata is
found because the location is set when a dataset is created and will
always be returned from the descriptor metadata.

The FileSystemMetadataProvider will now check for datasets located in
the provider's root folder and consider them part of the default
namespace. Tests are included.

This compatibility is needed so that callers do not have to change the
repository API. Existing configurations for the kite-maven-plugin and
DatasetSink should continue to work.
CDK-140: Update CLI for namespaces.

This removes all deprecated method calls and adds a --namespace option
to the BaseDatasetCommand. Previous commands should all work because of
backward-compatibility in the metadata providers.
CDK-140: Update kite-maven-plugin to use namespaces.

The namespace option was already added.
CDK-140: Add namespaces to Spark tests.
CDK-518: Add EntityAccessor to read entity fields.

Before this commit, there were serveral places that read record data.
Older code used PropertyDescriptor to get accessor methods and newer
code used ReflectData#getField and didn't use DataModelUtil. This adds
an EntityAccessor class that resolves an entity type against a Schema,
determines the correct GenericData model for reading, and accesses
record data. This is also a good place to expose the resolved entity
class, as well as the actual entity schema based on that class.

The EntityAccessor instance is Immutable and can be shared. It also has
support for reading nested fields that will be required by CDK-435.
Nested field names are separated by '.', for example, location.latitude.
Where possible, EntityAccessor should be shared because it caches the
sequence of fields to access nested data.