Reraising exceptions properly

I adapted the code from https://github.com/dcramer/reraise to include the original error message. This new method of reraising exceptions should retain the original traceback. So if you have pdb or ipdb on, you will receive the reraised exception with a more informative message, but your traceback will actually be where the original error occurred. It will also append the original exceptions and their messages to the new message by default.

See also https://groups.google.com/forum/#!topic/pylearn-dev/UbWz5tQDH5M
Doing this is bad. I know it was there before. This also catch ctrl-c. We don't want that. When you see this, change it to:

except Exception:

If you can be more specific, even better, but I understand that sometimes this isn't trivial to see what is needed.