Move WebSocketTextListener to own file
Introduce DataWriterClient trait for making reporting to DataWriters easier, close #1646