[libc++] Improve src/filesystem's formatting of paths.

Authored by arthur.j.odwyer on Mar 5 2021, 5:13 PM.


[libc++] Improve src/filesystem's formatting of paths.

This is my attempt to merge D98077 (bugfix the format strings for
Windows paths, which use wchar_t not char)
and D96986 (replace C++ variadic templates with C-style varargs so that
__attribute__((format(printf))) can be applied, for better safety)
and D98065 (remove an unused function overload).

The one intentional functional change here is in __create_what.
It now prints path1 and path2 in square-brackets _and_ double-quotes,
rather than just square-brackets. Prior to this patch, it would
print either path double-quoted if-and-only-if it was the empty
string. Now the double-quotes are always present. I doubt anybody's
code is relying on the current format, right?

Differential Revision: https://reviews.llvm.org/D98097