Remove shell.js in favor of internal Runner abstraction
Runner executes commands asynchronously so that the app stays responsive
Word of caution: we've faced issues related to overhead in the past (#47) although it's still inconclusive if asynchronous execution mattered for those cases. We should run the benchmarks after this branch is deployed and assure this change does not affect the measurements. If asynchronous execution does matter for those metrics, this implementation and the app's setup itself will have to be redesigned.
In this PR:
Word of caution: we've faced issues related to overhead in the past (#47) although it's still inconclusive if asynchronous execution mattered for those cases. We should run the benchmarks after this branch is deployed and assure this change does not affect the measurements. If asynchronous execution does matter for those metrics, this implementation and the app's setup itself will have to be redesigned.
closes #68