bug 1071306 - fix interval for treestatus updates

The interval was never being called because the promise was returned first.  So we set the interval first now, if it is the first time loading the repos.

This also includes:
* some code-cleanup and refactoring to for simplicity
* improves the efficiency of the screen updating, by ``_.defer()``-ing visual updates and doing them all at once when the screen is not busy.