job: save the real exception when unpickling fails

We raise our own exception which hides the real error (often an ImportError),
making it difficult to see what happend. Instead, save the original exception
too.
Make inner_exception optional, and use new except syntax.