Check format/printf/error/warning format string versus argument

Check format/printf/error/warning format string versus argument
and substitute a valid default format for the argument if there's a mismatch.
(Better than crashing because we push the wrong types on the stack only
to be found deep in vsprintf!)