Added extract_traceback function

Create a C++ traceback from a boost::python object. Refactored get_exception_info() to return a struct of boost::python::objects instead of a tuple with magic knowledge in it. Also refactored and modularized tests some more.
Same const question as with the other structs: what's the value in making these mutable? Adding mutability later is easy; taking it away is harder.