Move task execution logic into task runner
Move task execution logic into task runner

It is way better to handle locking while running the task.
We also now check for fatal errors (using shutdown function) in the task
runner, so we can mark tasks failed upon fatal errors (like out of
memory).
So far these errors were not detected and caused task to end up in
"RUNNING" state infinite.
These problems should now be resolved.

tenside/core-bundle