gatt: handle empty commands gracefully
gatt: move InteractiveConsole into thread

gevent.wait() unceremoniously fails within a thread, so move the
interactive console there and run gevent's wait loop in the main thread.