abstraction of transportlayer

Hi Minko,

First of all thanks for your great work.
I'm thinking of contributing another Network modus "p2p" using WebRTCs DataChannels. Therefor I abstracted clientside socket.io into a separate Transportlayer as a first step which you will find in this PR.

- Simon