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".
Can we also add a test which checks for failure if you try to write to a partitioned dataset with a provided partitioner and you're not writing through a view that provides the partition value?