Decoupling ChatInterface

Complete decoupling of the ChatInterface and some refactorings

can't use `this` here, since targetRoom is not class-level field, but a captured variable. I should make it final, though *cough*