Add ability to get entity names for a table.
Support Maps as composite wrappers.
Handle null unions for composite Daos.
Handle case where there are no field mappings (e.g. for a composite schema).
This large commit removes the concept of a key schema, and encodes the key schema
in the entity schema. Key fields can be added to the schema with a "key" mapping
type. Below is an example:

{
  "type": "record",
  "name": "UserActionsModel",
  "namespace": "com.cloudera.cdk.data.hbase.avro.example",
  "tables": ["cdk_example_user_profiles"],
  "fields": [
    {
      "name": "lastName",
      "type": "string",
      "mapping": { "type": "key", "value": "0" }
    },

    {
      "name": "firstName",
      "type": "string",
      "mapping": { "type": "key", "value": "1" }
    },

    {
      "name": "actions",
      "type": { "type": "map", "values": "string" },
      "mapping": { "type": "keyAsColumn", "value": "actions:" }
    }
  ]
}

Above is an example that has a 2 part key, where the first part is the lastName,
and the second part is the firstName field. The index of the key part is
specified by the value of the mapping type.