Moved event-oriented code to it's own submodule (mst_eventful). Not used by most of the code, and explicit superclass choice tells where it is actually used.
Changed connect_method signature to remove the extra object argument; should just call connect_method on the object we want to connect (somewhere) so that _observers list stays sane.
First iteration of turning the code more event-oriented - dns_db now uses events instead of callbacks.
Converted queue_check_propagate_rr to eventful model too. Still some parent references in mdns_if, but oh well.
Moved get_timeout logic outside scrsocket (as it's needed by others too).
Added sleep function which is coroutine-based. Also changed argument order.
Added function as not comparable type.
More descriptive error message.
Added (pseudo) synchronous mdns resolving functionality, which can be used in coroutine to do resolving as needed. (This should be tied to normal DNS stuff, and then Bob's your uncle.)