Fail better if asked to serialize a non-reference.

A component was trying to serialize undef() rather than a reference to
something undefined.  It was causing failure attributed to this
filter, rather than the user.  Now there's a stack trace to help
spread the blame.
Make _trap(), _warn(), etc. a little more consistent.

Put the process ID at the start of every line of error messages,
rather than just the beginning of the first line.  We deal with
subprocesses a lot at work, and this helps tease apart interleaved
messages.
Refactor _dispatch_event(), extracting _dispatch_signal_event().

_dispatch_event() was rather large, and there was an isolated section
for recursive signal dispatch.  That has been extracted into its own
method, _dispatch_signal_event() so the basic event dispatcher can be
smaller and more focused.  This should make it easier to improve
exception handling in _dispatch_event().
Remove some redundant C<no strict 'refs'>.
Switch some signal regression tests from ok() to is() for more detailed failures.
!!! CATCH_EXCEPTIONS revamp.

May be slightly backwards incompatible.  I expect more good to come
from it than harm.

POE should hide error messages less often.  Its usage of eval() and
propagation of exceptions have been simplified somewhat.

!!! This change reverses POE's stance on user-defined $SIG{__DIE__}
handlers.  Now they are honored inside event handlers.  Code that does
this is expected to know what it's doing.  Perl's global special
variables, including %SIG, have spooky action at a distance.

Modifying $SIG{__DIE__} locally shouldn't cause any problems.  The
original value will be restored at the end of the local scope.

I changed this because reasons:

1. Silent side effects suck.  Previously, POE would silently overrule
global changes to $SIG{__DIE__}.  This change makes things a little
more comprehensible.

2. $SIG{__DIE__} handlers are very useful for logging and debugging.
Setting them should be permissible.

3. If CATCH_EXCEPTIONS is on, and $SIG{__DIE__} is redefined in an
event handler, the programmer is told about the potential side
effects.  This is an experimental warning and is subject to change
more than most things.

4. Error messages were being hidden at work, and it was confounding
development.