Only open existing files for reading

One detail: to prevent a multiple `fs.exists` calls, the "nonexistence" of a file is cached until this file is open for writing. If another process creates this file in the meantime, `open()` will not see it.

Fix #41