Worker io refactor2

Implementation of the receiving (worker) side of the Json over standard IO refactor to use the IWorker interface.
@intern-felicco @abnanda1 @davidfowl 

This makes the behavior of the Run method consistent between the Agent and Worker (Run and block). It also avoids the async void pattern that we had used up to this point.