Use os._exit(0) instead of sys.exit()

In b2ab6e4ee2c1479450d0a7a494c69f83dcc7b5c2, we decided we needed to
hard exit the process to avoid any issues with lingering Qt objects or
threads. It turns out that sys.exit() doesn't do what we wanted; it
still waits for non-daemon threads to finish. We were still seeing the
process take 100% CPU and stick around forever after exiting, possibly
due to the MQTT thread. We need os.exit(0), which will hard kill the
process. We don't hold onto any locks or open files, so there shouldn't
be any issues with skipping cleanup.

That said, this is clearly a bad design practice, so at some point I
should figure out how to shut things down properly.