Adding initial View interface and Marker class.

Also 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.
Adding experimental MarkerRecord
Adding better documentation, range end types.

This adds toBefore(Marker) and fromAfter(Marker), which create open
range end-points.
Adding 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.