Replaced PartitionTextFileWriter with PartitioningDataStoreWriter - a mo...

...re generic implementation with pluggable entity writers and serialization formats.

Refactored the code so that writing, sharding and partitioning are separate concerns. 

The ShardedDataStoreWriter accepts a DataStoreWriterFactory to decouple it from the writing implementation.

The PartitioningDataStoreWriter accepts a ShardedDataStoreWriter, a PartitionStrategy and a Serializer which converts the entities to be written to the type accepted by the DataStoreWriters.

Some of the various *ObjectSupport methods have been made public so that they can be used from the DataStoreWriterFactory implementations (such as TextFileWriterFactory).
I'm not yet shooting down of this idea but we already have `org.springframework.core.convert.converter.Converter<S, T>` which I believe could suit better. Generally speaking if we want to have a conversion then it'd be better to use stuff from framework. That would then allow to optionally use conversion service.