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. 
If its buffer is empty, `bufio.Reader` will read from the file at `Peek`, and it will return read errors there. Since the following reads from the `bufio.Reader` are using `readable`, they are always served from the internal buffer. This means the errors from reading the file would be seen from `Peek` and not from doing `Read` (since we read only buffered data).