Fixer check task

addresses #575 

There are several features in this branch.

* Some attempts to recover more gracefully from some edge case conditions, esp when setting the audio_file duration.
* The Task class now has a new state *cancelled* and two new methods: .stuck? and .recover! which attempt to define, detect and handle "stuck-ness".
* Some rake tasks in the *fixer* namespace for checking all stuck tasks and acting on them.

For testing, this is mostly a regression test from a user perspective. I don't have any way of allowing the user to reproduce the conditions under which a task gets stuck; stuck-ness is more a condition of the necessarily async architecture. I consider this a baseline against which we can improve when we do encounter reproducible cases.