Command line mode

Opening new PR to replace #71
@davidfowl @abnanda1 
Ideally `.StopWorkers()` should be async and you would just await it. Otherwise it looks like to me we have to copy this pattern in all the runners while stopping workers should be the agent responsibility and not a responsibility split between the runner and the agent (in other words - the runner should not even know about workers)