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).
It's just that this 3rd generic may be a breaking change. Also we can't just rename files and break existing applications.