Capture and properly handle errors.
Handled in several places:
- In the run() of the ProcessMedia itself for
handled (BaseProcessingFail derived) errors (best to do these not
in on_failure because the errors are highlighted in celeryd in a
way that looks inappropriate for when the errors are well handled)
- In ProcessMedia.on_failure() for all other errors
- In the submit view where all exceptions are caught, media is marked
at having failed, then the error is re-raised. (The reason for
this is that users running in "lazy" mode will get errors
propagated by celery and so on_failure won't run for them.)