CDK-446: Add provided partitioner

This adds a "provided" partitioner that can work with partitions that are not connected to source fields on the entities stored in a Dataset. The new partitioner type requires a backing type that is used to validate constraints and to deserialize values from paths or partition keys. This type can be "int", "long", or "string" and defaults to "string".
Is there a reason we provide the type as a String rather than as either a Java class or an Avro Schema.Type?