added a line reader and extracted interfaces out for files and lines

this makes it so that you can use the FileReader as an iterator where it returns line readers for each line in the file. also extracted interfaces out of the line and file classes