Exception translator

This fundamentally adds the new exception_translator class. The associated changes include some utility functions and the introduction of the exception_info struct to replace the tuples we were using before.