Removed duplicated code in data readers by adding an abstract base class and isolating actual data reading in abstract method. Added some tests for SentenceReader.