desktop_util: Make wpath null-terminated

Fixes a frustrating heisenbug on Win32 causing ShellExecute() to
randomly fail with SE_ERR_FNF due to extraneous data being read
into the path string.

utils::string_to_wstring()'s return value is pretty much equivalent
to the std::basic_string<>::data() method in semantics; there is
no explicit null-termination done on it, so every time it works is
just a lucky coincidence.

Ideally we would get a std::wstring object as a return value and then
we'd call its c_str() method before passing the result to Windows,
but adding the null terminator ourselves works too.