Implements skeleton structure of #255.  What's there works, and is

designed to be able to move a few more exceptions at a time into the
new system incrementally until eventually they all use the new system.
Now that this is implemented this far, I can switch back to working on
other stuff I was blocked on.  I just didn't want to have to make yet
ANOTHER bit of code that throws generic exceptions.  I wanted this system
to exist so I could make new exceptions using it.