Create update tasks before running them

Failed tasks are collected and retried at the end.
Fixed updater progress

The updating progress is now executed on a seperate thread