CDK-177: Adding Key, a complete partition key.

This generalizes Marker so that a Key is a Marker that is complete for a
given PartitionStrategy. Marker is now an abstract class and its builder
returns ImmutableMarker objects that work as before.

Key is a mutable class that allows replacing either a single value or
the entire backing List. However, it is always guraranteed to have the
correct number of values.