Added a StringLineIterator that helps read a string line-by-line while
maintaing the start/end index positions and the current line number