Concurrent writes and reads

Hey,

I added tests for concurrently writing & reading a larger amount of data, and the tests failed beause we we're using `fs.write` directly. Using writeStreams for the active file fixed those problems.

But using streams also means that `DataFile#closeForWriting` couldn't be synchronous anymore, and therefore I had to change a couple of other methods as well to be asynchronous rather than synchronous.
Hey, it's actually used here: https://github.com/kesla/medea/blob/concurrent-writes-and-reads/medea.js#L489-L498 - to wait for a new file while one is being created.