use ReadString instead of ReadLine

ReadLine is a low-level primitive, and we don't do a good job of
splitting the lines as they are being read. best to read the entire
line and then split it in one go.

with this change, there is one test failure that will be resolved
next:

  --- FAIL: TestMaxLineSize (0.10 seconds)
         tail_test.go:410: tail ended early; expecting more: [he]
refactor this part of code for upcoming change
process line even if it doesn't end in newline

especially as we use ReadString now