Added IEntityFactory to abstract creation of entities during read.

Added IEntityFactory interface to abstract the process of creating new entity objects when reading a CSV stream.

This change allows the use of object-pooling semantics to reduce memory pressure when reading large CSV streams.