holoirc: multiple updates

* rewrite disconnect handling to be much more efficient and less crashy
* refactor a bunch more code
* cleanup dead code