Merge pull request #453 from NICTA/promises

Use promises to manage loading, instead of ad hoc insanity
Merge remote-tracking branch 'origin/master' into unused