Fix for timing issue in follower.Read

In the Read method, a file could be truncated or move in between when it was os.Stat'd for its maxSize and when it is actually read. This was causing errors when the file would shrink before it was read, because unexpected EOFs were occurring :D

To avoid that problem, I thought it would be safer make the reads occur on a bufio.Reader so its operating on a known amount of data in memory, rather than an unknown quantity on disk. 
Before reseting the `bufio.Reader`, we'd need to recover the buffered bytes and pass a `io.MultiReader(buffered, file)` to the new `bufio.Reader`, so that previously buffered bytes aren't lost.