Asynchronous variant that is easier to use and multi-thread safe.
Using LinkedMap that preserves insertion order for the implementation and also added unit tests for that.
* removed the Async utility * now using Ping message to webclient for keep alive instaed of actual content * added remote shell to AgentInfo * retry of connections to the agent * better logging for SynchronizeStreams