StaticFileHandler now reads and writes the requested file in (default) 64kB-chunks

Avoids exceeding available memory for very large files. Also a bit more fair to other concurrent requests, which no longer have to wait for the entire file to be written before resuming.

Etags are now generated from hashing the pathname and last modification time, rather than file contents. This may be a slight performance improvement; I haven't checked.