The file-writing interface is streamy, but behind the scenes the data just
accumulates in memory and gets written to the fs when the stream is closed.
Now that we have the strings table to accumulate the data, we no longer
need to hold it in memory (although note that the issue of cleaning out
unreferenced strings after a crash, or even after a writer just wanders off
without ever closing the stream, is tricky).
See:
tree.c:svn_fs_apply_txdelta() and friends
dag.c: svn_fs__dag_set_contents() and friends