Three changes:

1. Added the ability to break upon error.
2. Fixed the initial setting of IO to happen when IO itself is not
defined, but not its descendants.
3. Resetting IO when the original device is different didn't work
properly since I removed the reliance on Kernel. Fixed that.
Breaks break even on failed tests. Also,

IO cludge to keep printing to screen. Needs to be fixed.