vm/mixin/net: disconnect network interface on backend shutdown/crash
vm/mixin/net: disconnect network interface on backend shutdown/crash

Since we have more reliable domain-shutdown event delivery (it si
guaranteed to be delivered before subsequent domain start, even if
libvirt fails to report it), it's better to move detach_network call to
domain-shutdown handler. This way, frontend domain will see immediately
that the backend is gone. Technically it already know that, but at least
Linux do not propagate that anywhere, keeping the interface up,
seemingly operational, leading to various timeouts.
Additionally, by avoiding attach_network call _just_ after
detach_network call, it avoids various race conditions (like calling
cleanup scripts after new device got already connected).

While libvirt itself still doesn't cleanup devices when the backend
domain is gone, this will emulate it within qubesd.

Fixes QubesOS/qubes-issues#3642
Fixes QubesOS/qubes-issues#1426

QubesOS/qubes-core-admin,QubesOS/qubes-core-admin,marmarek/qubes-core-admin,marmarek/qubes-core-admin,QubesOS/qubes-core-admin,marmarek/qubes-core-admin