move this to the backend
move this entirely into the backend

again, it's not safe to have things from other threads calling into
xlib, and cairo calls on the backend_cr count as calling into xlib
make visual bell more reliable
set urgent when we receive a bell