Working queue

As per usual, comments are welcome :)

Fixes #380


Two questions arise here:

- We probably can't protect against this, but what happens if the writing to the WorkingQueue fails?
- What happens when the job isn't properly unregistered by the worker? I.e. in the case of a job timeout, or a lost connection?
- What components rely on the WorkingQueue? I mean, how reliable does it need to be? Is it only used for monitoring progress?