Queue event handlers rather than watches.

Fix for #229. Queue handlers rather than watches so `observer._dispatch_event()` won't need the lock.

This does couple emitters and observers, but I think that can be fixed if the rest of the solution is sound.