mercury: auto-reconnect on BrokenPipeError (stale TCP socket)
Add _close() to reset connection state. get() and put() retry once
after reconnecting on BrokenPipeError/OSError. init() and abort()
now route through self.get("ERR") instead of pidevice.qERR() directly.
wait() and Stage.is_moving also handle dropped connections.
Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com>