feat(runner): Return a promise from runner.runOnce

In some cases knowing when the runner has finished is a requirement -
e.g. an async grunt task.