Synchronize less frequently when compressing descriptors

This may improve our compression ratios.

fix for 11787
Allow ClientTransportPlugins to use proxies

This change allows using Socks4Proxy, Socks5Proxy and HTTPSProxy with
ClientTransportPlugins via the TOR_PT_PROXY extension to the
pluggable transport specification.

This fixes bug #8402.
Fixed the test build with --enable-gcc-warnings
Remove get_bridge_pt_addrport().

The code was not disambiguating ClientTransportPlugin configured and
not used, and ClientTransportPlugin configured, but in a failed state.

The right thing to do is to undo moving the get_transport_by_addrport()
call back into get_proxy_addrport(), and remove and explicit check for
using a Bridge since by the time the check is made, if a Bridge is
being used, it is PT/proxy-less.
Log the correct proxy type on failure.

get_proxy_addrport fills in proxy_type with the correct value, so there
is no point in logging something that's a "best guess" based off the
config.
Improve the log message when a transport doesn't support proxies.

Per feedback, explicltly note that the transport will be killed when it
does not acknowledge the configured outgoing proxy.
Correctly remove extraneous space in router family lines

Fixes bug 12728; bugfix on 0.2.1.7-alpha when the SPLIT_IGNORE_SPACE
option was added.
Start converting circuitlist to smartlist.
Autoconvert most circuit-list iterations to smartlist iterations

Breaks compilation.

Used this coccinelle script:

@@
identifier c;
typedef circuit_t;
iterator name TOR_LIST_FOREACH;
iterator name SMARTLIST_FOREACH_BEGIN;
statement S;
@@
- circuit_t *c;
   ...
- TOR_LIST_FOREACH(c, \(&global_circuitlist\|circuit_get_global_list()\), head)
+ SMARTLIST_FOREACH_BEGIN(circuit_get_global_list(), circuit_t *, c)
  S
+ SMARTLIST_FOREACH_END(c);
Hand-fix a few global_circuit_list cases
No longer advertise or negotiate any consensus method before 13.

Implements proposal 215; closes ticket 10163.

Why?  From proposal 215:

   Consensus method 1 is no longer viable for the Tor network.  It
   doesn't result in a microdescriptor consensus, and omits other
   fields that clients need in order to work well.  Consensus methods
   under 12 have security issues, since they let a single authority
   set a consensus parameter.
...
   For example, while Tor 0.2.4.x is under development, authorities
   should really not be running anything before Tor 0.2.3.x.  Tor
   0.2.3.x has supported consensus method 13 since 0.2.3.21-rc, so
   it's okay for 0.2.4.x to require 13 as the minimum method.  We even
   might go back to method 12, since the worst outcome of not using 13
   would be some warnings in client logs.  Consensus method 12 was a
   security improvement, so we don't want to roll back before that.
Remove support for generating consensuses with methods <= 9.

The last patch disabled these; this one removes the code to implement
them.
Remove implementation code for all pre-13 consensus methods.

Also remove a test for the way that we generated parameter votes
before consensus method 12.
changes file for bug 10163 / proposal 215.
When counting memory from closing a connection, count the dir conn too

Fix part of bug 11972
Fix entrynodes test fails because of outdated test vectors.
Merge remote-tracking branch 'public/bug12728_024'
Warn if Tor is a relay and a HS

Closes 12908; see #8742
Merge remote-tracking branch 'public/bug12908_025'
Changes file for bug 11787