Added 'server' functionality as a separate thread within the client process (also moved the 'client' functionality to its own thread'. The sequencer now returns messages to all connected clients, and the clients can print it to the screen
Clients now notify the server when they leave (via SIGINT) and the server removes them from its list