Reimplement matching algorithm using an Endpoints datastruct for both client/server
- select prefix pool based on least-well-served rather than arbitrarily
- don't attempt a match until a proxy is available to service the request
- don't match ipv6 proxies to ipv4 servers
drop the "chain" terminology and use PROXY_TRANSPORT to describe the proxy's capabilities