Open files in a with-block so that they're cleanly closed
Hash 4MB blocks for speed
More: Open files in a with-block so that they're cleanly closed