Manage downloading jobs.
Use Qt evented code to download job if this is running itself from a QThread.
Returns a error string if the download fails.