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.
Also get rid of generate(). It's a neat idea, but doesn't have the right semantics since fibers are eager. Something like generate() could be created, but it will need a pair of channels to ensure the generator doesn't run ahead of the thing pulling from it.
Some tests relied on print() being synchronous.