Add abstraction for transport mechanisms on the server side.

So far only covering TCP/UDP, as before.
Change the broadcast message format to contain server URLs.

Removes the assumption we are connecting via TCP.
Use the server URL rather than reading from probe settings directly.
Send the server address as URL.
Send the entire server address back to the launcher, not just the port.
Add support for using local sockets as transport.

That's going to be needed on Android when not having the network access
permission.
Support URLs as user input for --connect and --listen.
Port ClientLauncher to use URLs as input.
Pass a URL to the client, instead of just host/port.
Add the last missing piece to pass the server address as URL.