toke.c: "Unrecognized character" error shouldn't leak memory or mangle characters.

This error could've leaked memory if used within as eval, and could
cut off in the middle of a character, leaving worthless binary data
in the error message.
regcomp.c, S_compile_runtime_code: croak using the SVf format

This makes error messages from code like this:

    $f = "(?{q\0foo\0 + \x{FFFF}})";
    "a" =~ /^a$f/;

Be both UTF-8 and nul clean.
regcomp.c: Make all warnings and error messages UTF-8 clean
regcomp.c: Introduce vFAIL2utf8f to replace the APPLY(X,Y) hack

The APPLY() hack was added in the previous commit to get
vFAIL4("%"UTF8f, UTF8fARG(a,b,c)) working.  Without it,
vFAIL4 would complain about missing arguments, since it only
saw one, but if replaced with vFAIL2, then Simple_vFAIL2 would
complain about having too many arguments.

This commit introduces a vFAIL2utf8f macro that works around
this and enables us to remove the hack.
t/re/reg_mesg.t: Tests for latin1 error messages/warnings
Make the "Switch condition not recognized" error message UTF-8 clean
[Merge] Make regexp error messages utf8-clean