Display uncaught errors to user.

Kind of hacked in, but the basic structure is there. This is a bit
tricky because toString needs to be called on the error object, so
we have to run some Magpie code after an unhandled error has
occurred.

Still need to make the various Error classes define useful toString
methods now.