Remove threads and intro async

stop using threading to handle the 2 loops (ui and server). Now
use signal timeouts to simulate async on the ui and use nonblocking
zeromq recv
Use nonblocking getch to get better async

getch can be configured (nodelay) to return immediately if there's
no user input. This enables better async design and the current
code works flawlessly except for BACKSPACE
Enable backspace and fix max lines issue

backspace now works
when you reach max lines automatically clears