Rework to allow choosing the path and name prior to opening and writing to the file. This is done by creating an interposed WriteableStream that buffers streamed data until the directory is created and the path can be resolved. Does not have adequate error handling yet.