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.
I don't think this is being used in this PR.