Have game run on a separate thread

So the UI now updates normally and the running of the game happens on
a separate thread. Only down side is the "finished" UI update happens
on that thread which isn't clean but WFM.