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".
All you're doing is delaying the conversion to the `ProvidedFieldPartitioner`. You don't need to do a `Class.forName` because you can do the same kind of conversion you do today, just earlier.