CDK-342: Add JSON parser and generator for partitioning.

This adds PartitionStrategyParser, which parses a JSON-formatted
representation of a PartitionStrategy. Right now, the partitioners are
hard-coded in the parser. This also updates the PartitionStrategy's
toString method to produce a valid JSON representation. toString behaves
as in Avro's Schema.

Invalid partition strategies result in a ValidationException.
ValidationException replaces SchemaValidationException, which is now
deprecated.

To simplify the strategy construction, this updates the field
partitioners that have default partition names to accept null names and
use the default. This also adds @Nullable to the equals method to avoid
warnings.
CDK-342: Add descriptor builder methods for JSON partition strategies.

This adds methods that mirror the schema setting methods in the
DatasetDescriptor.Builder. In addition, if the partition strategy is not
explicitly set using those methods, then it is parsed from the schema.

This commit also removes the Schema from the parser. Partition
strategies can be defined independently, and consistency is checked in
the DatasetDescriptor. The Schema was only used to set the
IdentityFieldPartitioner source (and result) class, which is now Object.
The only place this was used specifically was in valueFromString, which
now requires the expected type.
Add ColumnMappingDescriptor and parser.
Rename ColumnMappingDescriptor to ColumnMapping.
Add ColumnMappingParser tests.
Add support for field-level mappings.
Fix missed method rename, getColumnMapping.
Add jackson to CLI shaded artifacts.

This also moves the kite-data-core dependency to the right place.
CDK-342: Address Tom's review feedback.

The major change is that FieldMapping has been moved to the API. The
problem was that FM was leaked by ColumnMapping. To fix this, we needed
to either move FieldMapping to the API or remove the FM methods from
ColumnMapping. Removing the methods requires splitting ColumnMapping
into two: a generic mapping, RecordMapping, and a specific subclass,
BigTableMapping. The problem with this approach is that it introduces a
class without an interface. No implementations other than the hidden
BigTableMapping would be supportable for consistency checks,
serialization, etc. The clean solution for now is to expose FieldMapping
and generalize ColumnMapping later.
Temporarily remove embedded column mappings.

This currently breaks HBase because it hasn't been ported to the new
mappings. Because this is trying to break the kite-data-core changes and
the kite-data-hbase changes apart, this shouldn't be added until HBase
is updated.