Don't tell the kernel to flush an unused file

The documentation for posix_fadvise states that if len is 0 the advice
extends to the end of the file. We currently always pass 0 for
the first two posix_fadvise calls (first because ofs is 0, second
because ofs == BLOB_READ_SIZE == 1024*1024) so we're advising the kernel
to dump any predicted file caching twice per file.

This patch ensures we don't pass a len of 0 in the two scenarios above.
Simple iterator implementation
Now we can iterate over a file
Move file iterator to its own c module
Fix loop if file reading fails
Accept file object instead of file descriptor
Better internal var naming
Apparently python has a builtin for this
HAVE_ITER is implicit in DEFAULT
Fill out custom type with all fields
Initialise the iterator as a constructor (like enum)
Rename to bring in line with hashsplit.py
Accept a list of files to iterate over
Rename variable
Accept iterators and sequences, allow progress callback, correct some
types, variable renames
Assorted cleanup
Use fadvise_done
Don't fadvise done the next file
Handle non-file objects by passing back to python
Handle naughty fileno method, now functionally equal to python
readfile_iter