Add a 'Your port' field in the settings panel: empty keeps local-network mode
with an ephemeral port, a value rebinds the TCP listener to a stable address
for dialing over a VPN. Active conversations survive the rebind. Adds
controller.set_listen_port and a rebindable transport.start(port).
Multicast discovery cannot traverse a VPN tunnel (WireGuard, Tailscale), so add
a controller dial-by-address path and a --port flag for a stable address. The
GUI settings panel shows your port and offers a 'Connect to host:port' field;
dialed and inbound peers now appear in the sidebar. Documented in the README.