Track VM state via explicit state machine in Controller
Pass socket object, not fd, to Controller.connect_viewer() callback
SpiceWidget: Don't manipulate children when already destroyed
Allow creating ErrorBuffers outside exception context
FatalErrorWindow: Don't show Details expander if there are no details
Controller: Add fatal-error signal for miscellaneous fatal errors

that occur outside a well-defined event sequence (such as TCP connection
failures).
Add remote VM protocol, server, and RemoteController