LocalController: Drop redundant test

Now that we track initialized/shutdown state in Controller.state, we
don't need to separately test self._conn.
LocalController: Make stop_vm() asynchronous

The UI assumes that stop_vm() is asynchronous, when in fact it wasn't.
We only need it to be synchronous when called from shutdown(), so handle
that case specially.
Controller: Eliminate startup_cancel()

startup_cancel() and stop_vm() are really the same thing in slightly
different contexts.  Merge their methods, signals, and protocol messages.
Convert startup-failed into informational signal

For consistency, send vm-stopped after a failed startup.  Convert
startup-failed into an informational signal which only delivers the error
message.
Rename startup-complete signal to vm-started

It fires after reconnection as well as immediately after VM startup.
LocalController: Avoid race if startup is cancelled very early

which could cause the cancellation request to be ignored.  Since the
progress and main windows would already be hidden, the VM would start
successfully and continue running with no indication to the user.
Fix spurious vm-stopped signal after rejected memory image

If libvirt delivered a VIR_DOMAIN_EVENT_STOPPED event after the startup
thread had retried startup without the memory image, the Controller state
would be improperly reset and the UI would try to start the VM when it
was already running.
Fix deadlock in VMNetXServer.shutdown() when VMs are running
Fix AttributeError trying to transmit on a closed endpoint

triggered by _Pinger._timer().