Refactoring and user help

Refactored code to be more flexible, robust and modular
Added enhanced usage hint and added --help option
Moved to Qt

Qt project setup + basic UI
Basic bidirectional communication

Program in server mode is able to listen to a client then send and
receive messages
Program in client mode is able to connect to a server then send and
receive messages
Enhanced chat view

Chat view now displays info messages and errors, chat messages are
nicely formatted
Now possible to stop server or disconnect client

User can start and stop the server
User can connect and disconnect client
Merge branch 'qt'