Reset stdout to the default direct-to-UART handler on exceptions and
abort()s. Users may have used set_write_stdout() to redirect output
elsewhere, which likely isn't going to work in the exception handler.
In case of heap corruption or some other major problem, dumping details
in the exception handler can cause a crash loop - so fail out if we seem
to be going in circles.
Also reduces the IRAM footprint of the fatal exception handler, as only
the prelude (which disables interrupts & enables the flash mapping) is
in IRAM now.
Closes#54, relevant to #133.