Don't save tuple fallbacks in playlist files.
Be more permissive about filename encodings.  We now support:
- URIs encoded using the system locale on legacy systems
- Filenames erroneously encoded in UTF-8 on legacy systems
- Filenames (and binary-same URIs) in unknown encodings on any system
Also add an efficient str_to_utf8() overload for StringBuf.