Turn NettyWebSocket into an abstract class and introduce a Factory, close #656