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.