Decoupling ChatInterface

Complete decoupling of the ChatInterface and some refactorings

I think `() -> processMessageQueue()` could be replaced to `this::processMessageQueue()`, IIRC.