CDK-435: Partition by nested fields

This enables partition strategies to refer to nested fields within records for source data.
It hits when you have a type that inherits from `IndexedRecord` but doesn't implement `GenericRecord`. `GenericData` handles all generic records using the indexed API, so it can be used here rather than defaulting to reflect.