Merge remote-tracking branch 'upstream/master' into hbc-integration
Major refactoring of the SchemaManager (previously known as EntityManager) subsystem.
The SchemaManager no longer creates entity mappers. It now only provides schema
metadata querying, schema creation, and schema migration.

The schema management is now in a package called com.cloudera.cdk.data.hbase.manager

The sole implementation of the SchemaManager interface, DefaultSchemaManager, is not
tied to any particular schema parsing implementation. In fact, it will construct
the appropriate schema parser indicated by metadata on the managed schema record.

It's Dao implementations responsibility to construct entity mappers from the
SchemaManager's schema values. The Avro dao implementations construct a new
VersionedAvroEntityMapper which has the ability to read rows of varying schema
versions.

The ManagedSchema record now contains metadata about the schema parser to use,
and the key and entity serdes rows are persisted with. The SchemaManager uses
the schema parser metadata to construct the appropriate schema parser. It's the
Dao's responsiblity to construct the the appropriate key and entity SerDe
implementations indicated in the ManagedSchema record. The current Avro
implementation doesn't do this today since there is only one, but it's trivial
to add this in when needed.

EntitySchema implementations, like AvroEntitySchema, now have methods that
indicate whether it's legal for one EntitySchema to migrate to another. This
logic is no longer in the SchemaManager.
Remove getKeySerDe(), getEntitySerDe(), and getEntityMapper() methods from
Dao since they are not a part of the public API.
Move KeyEntity to top-level class.
Remove public Dao#getScanner() methods that take a ScanModifier, since
the latter depends on the HBase API.
Remove Dao#getScannerBuilder() from public API since it has HBase-specific
Scan and Filter references. We can add a builder API back later if needed.
Move public API classes into com.cloudera.cdk.data.dao package. This is
not necessarily the final name, it was chosen just to group the API classes
together and may change later.
Group HBase javadoc
Reduce package visibility and move non-public Avro classes into an impl
package so they are hidden.

The only public packages are com.cloudera.cdk.data.hbase.{avro,manager,tool}.
Fixed a bug where schema equality was failing due to us only checking that sub-field
types were the same, not checking equality of the actual schemas of those
types. This was causing issues where adding a subfield schema migration
would fail. Now, we do schema equality using a method that ignores certain
types of properties on schemas, like the java.string property.

A test case was added to validate that subfield schema migrations will
work.