Fix two bugs:

Properly remove files from the Files structure when they go away.

If a file is growing when we analyze it, we might end up with
bytesToRead going negative which would cause infinite loops. Bail out,
the caller will notice that the file size has grown and will re-enqueue
a metadata generation.