Add Multithreaded Calbacks

I have no idea how gtk handles signals/callbacks behind the scenes, but
the responsiveness of my program seems to crash when my callbacks take
to long to unblock. As a result I've spawned off some go routines to do
the wait, so that the callback can return normally.
Implement GDK Thread Safety

This cleaned a bunch of bugs up. I had suspicions all along that I was
not complying with GTK thread safety but I think now things should be
much better.