Implement our own options reader/writer

We avoid read.dcf / write.dcf as they mangle whitespace in fields,
something we need to avoid when writing out paths. Fields are now
strictly newline-delimited in the options file (this also helps in paths
as we can now have paths containing spaces, commas, tabs, and so on
without having to fudge with escaping + commas. The only caveat is we
cannot have newlines in path names, but anyone who puts newlines in
their paths deserves what they get)