Move update functions into game loop to fix various issues.

Only update interface before it is redrawn.
Update game on every tick.
Save game after game update so that saveing then loading won't skip a game tick.