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 
While I am testing the actual implementation of the interface, if my unit test requires the class itself (i.e. to access methods or properties other than the constructor) it seems to indicate a deficiency in the design.