glibc's printf family of functions support '%m' to emit the error string
that corresponds to the current value of errno. It has no corresponding
argument.
In order to take advantage of safe_strerror, PrintfFormatter::format calls
format_system_error, which has been modified to not emit the separator if
the message prefix is empty.
'm' needs to be added to the list of special characters in format-test.cc's
check_unknown_types since it would otherwise always be valid in the format
string.
The AppVeyor mingw test shows that errno is being reset to zero during the
processing of '%m', so it needs to be explicitly preserved. This doesn't
seem to happen on Linux, MacOS, or Windows with MSVC but the preservation
code does no harm.