Use socket.io as a regular dependency
Update socket.io adapter
Do not set `adapter` property to handler if it's already used.

Previous behavior causes wrong socket.io adapter setting. socket.io `Namespace` is returned by IOAdapter#createHandler() and it has `adapter` property set to socket.io adapter being used.
Add tests for socket.io adapter