Worker io refactor

Part one of four to refactor the Worker to Agent connection. This change adds an IRemoteWorker interface that is used on the Agent side for sending messages.
@davidfowl @abnanda1 @intern-felicco 
But in this case you are invoking the actual method - it is not the interface method that writes to the stream. In other words if I created a mock object implementing the interface but with no implementation whatsoever would the test pass? If not (which I believe is the case here) then you should not test against the interface because you are testing actual implementation of the interface. Interfaces are good as dependencies but not as objects under test.