Assign proxies based on self-reported client load
A lot of the discussion and motivation for this can be found in today's anti-censorship team meeting notes. We want to make sure we have enough Snowflake proxies to hand out to clients with symmetric NATs.
There is already partially implemented log at the Snowflake broker to assign a client load value to proxies and prioritize proxies with less load. So most of the implementation of this feature will add a new message to the proxy-broker messaging protocol for proxies to report their client load, and modifications in proxies that allow them to keep track of their load.
We also need to worry about backwards compatibility since older proxies won't report any load value and this doesn't necessarily mean their load is 0. It is, however, likely to be pretty low (0 for browser proxies and < 10 for standalone ones). This is also more important to implement for standalone proxies that browser-based proxies right now.