Fix a bug in open3_run() signal passing that would clobber $SIG{__{WARN,DIE}__}

Ever since run_forked() was added in 0.51_01 from a patch from Petya
Kohts via RT #50398 (https://rt.cpan.org/Ticket/Display.html?id=50398)
this code has been clobbering $SIG{__DIE__} and $SIG{__WARN__}, but
*only* if those had previously been assigned to %SIG.

This makes no sense, as the intent of this code is to pass POSIX
signals to the child, not virtual signals like __DIE__ or __WARN__.