Make undefined exception entry MPSAFE.

The old code used static storage to preserve a couple registers while
setting up the trapframe for the main handler.  Doing so was the last
leftover crumbs from the days when a low-level debugger was hooked into
the exception entry code.

Now the exception entry sequence is essentially the same as for the
other exceptions, which still involves needlessly indirecting through
a function pointer which points to the same code on every platform.
Removing that indirection will be handled as a separate cleanup.

This work is based on an analysis by Juergen Weiss.