Fix std::terminate when debugger is not attached during unwind

Summary: The phpDebuggerExceptionHandlerHook is called in a situation where
we're not allowed to throw an exception, but down a few layers (P19210100) the
debugger hook apparently throws if there is not debugger client attached.  It
looks like even the other case there (DebuggerProxy::interrupt) can probably
throw, since it has rethrowing-catch blocks.  If this propagates out to
exception_handler we call std::terminate because it's marked noexcept.

This fix doesn't seem perfect: it's really unfortunate to run such a large
amount of code under a noexcept function, but it's also not clear what we could
do that's better in exception_handler.  If we just let it propagate, we'll not
have finished unwinding the VM state for our nesting level, which is broken.
If we try to catch (...) another time, it could still just throw again.  If we
catch in a loop, I'm pretty sure (but without a repro) it looks like this case
would just be an infinite loop.

Reviewed By: @markw65

Differential Revision: D1758655

Signature: t1:1758655:1419903849:cc9f3645bb08dd31dab9ee0ef342e23ee6f81eba