Seperated UI thread from process thread

Still needs minor UX stuff added. line 52 of job.cs is a mainwindow
dispatcher call. all of its contents need to be updated in the thread.