CDK-675: Enable javadoc with java8
optimize performance of removeFields and removeValues morphline commands
CDK-435: Enable FS nested partition source fields.
CDK-518: Remove PartitionKey use in Log4jAppender.
CDK-435: Update HBase to use EntityAccessor for keys.

This updates PartitionKey so that its data is extracted using the
EntityAccessor class. It also consolidates key building in the HBase
implementation by adding EntityComposer#extractKey and delegating all
key building to that method (via the new EntityMapper#mapToKey(E)). The
EntityComposer method is based on EntityAccessor because the most
reasonable place to manage the accessor is inside EntityComposer.

AvroEntityComposer also uses the accessor for extractField now, but
checks to ensure that the field is not a nested field, for now. The
getDefaultPrimitive method is no longer used so that this is compatible
with Avro's behavior.
Fix EntityAccessor for read schemas from AllowNull.

The EntityAccessor assumes that the dataset schema has no nullable
record fields for partition source data, which is validated by the
descriptor checks. However, when using reflected records with Schemas
generated by AllowNull, this may not be the case even though the
descriptor has validated correctly. This adds support to skip nullable
unions.
Merge pull request #217 from whoschek/build-with-java8

CDK-675: Enabling javadoc with java8
CDK-446: Add provided partitioner.

This adds ProvidedFieldPartitioner, which is a partitioner that has no
source field. Constraints for this partitioner are specifically ignored
when applying predicates to entities because there is no connection
between the entity data and the partition predicate. However, predicates
for provided partitioner fields do apply when filtering FS partitions
because the data is present.

The provided partitioner allows 3 value types: string, int or long.
The new test for partition iterators with provided partitions tests that
these types are required when building Constraints and values from
partition paths are correctly coerced. The value type will be defaulted
to string if no type is specified.

To enable writing to provided partitions, Constraints has been updated
to keep track of "provided" values. Any value uniquely set in the
Constraints is considered provided. For example, ds.with("version", 34)
considers 34 a provided value for "version". The provided values are
then passed to the accessor when it builds StorageKeys and correctly set
if the partitioner type is a provided partitioner. This is tested for
the FS implementation in TestPartitionedDatasetWriter.

The partition strategy parser, builder, etc. have been updated for the
new partitioner type. The value type is represented as a "values"
property of the JSON partitioner object that can be "string", "int", or
"long". This corresponds to the Avro types' short-hand.
CDK-446: Add provided partitioner to CLI partition-config.
CDK-446: Add provided partition strategy for Hive.

This adds a conversion from Hive's partition columns to a partition
strategy using provided partitioners. This will allow Kite to read any
partitioned Hive table backed by avro or parquet that has the Schema
properties set correctly.
CDK-676: Use LinkedHashMap in Constraints to fix URI ordering.
more optimization of performance of removeFields and removeValues morphline commands
CDK-676: Update URIBuilder tests for Constraints order changes.
CDK-578: Add convenient type read accessor to settings, and enable dryRun mode via settings
increase morphline test coverage for typed settings
CDK-684: Fix CLI command name in help messages.

This defaults the CLI command name to the current default, kite-dataset,
and also adds a --dollar-zero hidden option that gets set to $0 by the
wrapper script so that the command name is whatever was called.
Added a new configuration concept called ServiceConfig. This is a config
object that is passed to the Service implementation's configure method
(also new in this commit), which allows Service implementation to
configure themselves.

Service specific configuration params can now be set with the MiniCluster
builder's setServiceConfig method.

The MiniCluster is now a more flexible Factory to new Service implementations,
offering a static registerService method that allows service implementations
to register themselves in static initializers.

The command line now accepts service configs as dynamic JCommander config
parameters. This will automatically be populated in the ServiceConfig
object. It also accepts fully qualified class names of services to run,
which allows new Service implementations to be added on the classpath,
and automatically runnable and configurable via the command line.

All listen ports are configurable via the services, giving us more control
over what sockets are bound to. Also, all sockets will be listening on
the same IP, even if bindIP is not set (the default will be 127.0.0.1).
Wildcard ports are now never used, even when ports aren't explicitly
configured.

We now wait for HBase regionserver to come online using the
waitForServerOnline method isntead of using a while(true) loop.

Shutdown notification now uses a CountDownLatch instead of the notify
method.
Added zk-port and namenode-rpc-port as first class config options
for the mini cluster. These have been added to both the builder and the
command line.
Removed the managed schemas table creation as part of the kite minicluster
launching, as that will automatically be created by HBaseMetadataProvider#create if
needed.
CDK-664: Fix constraint over-encoding in view URIs