CDK-177: Adding initial View interface and Marker class.

Added AbstractDataset, which FileSystemDataset now extends to implement
most of the new methods in the View interface. Where possible,
AbstractDataset returns itself (for example, getDataset). Other new
methods are defaulted to UnsupportedOperationException.

Added PartitionStrategy#keyFor(Marker) and changed the Field
partitioners so that the source type is accessible. This is necessary
when calling Marker#getAs(name, type) with source fields. For
consistency, changed partitionKeyForEntity to keyFor. Also added newKey
to get a key that works with the PartitionStrategy, rather than
implementation-specific Object... methods.

Added PartitionKey comparison to PartitionStrategy. PartitionStrategy
now implements Comparator<PartitionKey> and FieldPartitioner<S,T>
implements Comaparator<T>. Strategies rely on the FieldPartitioners to
compare each field in a given key.

PartitionKeys are not Comparable because the comparison only has
relevance within a given PartitionStrategy. In addition, PartitionKeys
produced by different PartitionStrategies would potentially fail with
IllegalArgumentException when runtime types do not match, or may simply
produce useless comparison results.