Make createFileReader private and extract isGzipFile
Modify SeekInFile and FileHashMismatch to handle gzipped files

Previously, Seek was used on the current fd to seek to the
penultimate line in the file and hash the last line.

Where the current file is gzipped, consume bytes from the
gzip reader to give the same effect as Seek.

This creates unnecessary garbage but is probably the simplest
way to emulate Seek.
Only compare file size and seek position for non-gzipped files

Number of unzipped bytes read will often be greater than the file size.