safesyscalls: check embedded nul in syscall args

Check for the nul char in pathnames and string arguments to
syscalls, return undef and set errno to ENOENT.
Added to the default severe warnings category syscalls.

Strings with embedded \0 chars were prev. ignored in the syscall but
kept in perl. The hidden payloads in these invalid string args may cause
unnoticed security problems, as they are hard to detect, ignored by
the syscalls but kept around in perl PVs.
Allow an ending \0 though, as several modules add a \0 to
such strings without adjusting the length.
Ignored on WinCE since this uses the wide char API.
ExtUtils-Manifest-1.62_01: fix safesyscalls, no double \0 for open()

cp_if_diff used an old-style open(F,"< $from\0") to force an ending \0,
which is not needed with 3arg open, and leads to safesyscalls errors.
no strict 'syms'; check illegal names

Add a new strict check syms
Disallow illegal unparsable symbol and class names.

Esp. interesting are embedded \0 in classnames, which were until 5.16
silently ignored, and since 5.16 allowed. Since 5.16 names are
internally nul-safe, but roundtrips are not supported, and
such hidden payloads are useless for perl, are hard to detect and
may lead to security problems.