[WIP] Implement new local runner on top of subprocess.Popen

This pull request re-implement local runner on top of subprocess.Popen.

Previously we used fabric runner which involved a lot of overhead and unnecessary in-direction.
Go for it.  I have a handful of workflows I would need to fix but the customer stuff I have done was all Python runner anyway so it is fine.