Correctly copy microdescs/extrinfos with internal NUL bytes

Fixes bug 8037; bugfix on 0.2.0.1-alpha; reported by cypherpunks.
Build donna32 with -fomit-frame-pointer
New consensus method: clip the maximum votable unmeasured bw

If we're deciding on a node's bandwidth based on "Bandwidth="
declarations, clip it to "20" or to the maxunmeasuredbw parameter,
if it's voted on.

This adds a new consensus method.

This is "part A" of bug 2286
Add utility functions needed for SOCKS argument parsing.
Add support for parsing SOCKS arguments.
Validate SOCKS arguments.
Send SOCKS arguments when doing SOCKS4.
Send SOCKS arguments when doing SOCKS5.
Add changes files.
Fix various issues pointed out by Nick and Andrea.

- Document the key=value format.
- Constify equal_sign_pos.
- Pass some strings that are about to be logged to escape().
- Update documentation and fix some bugs in tor_escape_str_for_socks_arg().
- Use string_is_key_value() in parse_bridge_line().
- Parenthesize a forgotten #define
- Add some more comments.
- Add some more unit test cases.
Refactoring to make parse_bridge_line() unittestable.

- Make parse_bridge_line() return a struct.
- Make bridge_add_from_config() accept a struct.
- Make string_is_key_value() less hysterical.
Add parse_bridge_line() unittests.
Add some code to bluntly prevent duplicate guards from getting added

Apparently something in the directory guard code made it possible
for the same node to get added as a guard over and over when there
were no actual running guard nodes.
Be more robust when excluding existing nodes as new dirguards

In addition to rejecting them post-hoc, avoid picking them in the
first place.  This makes us less likely to decide that we can't add
guards at all.
Changes file for bug8231 (duplicate directory guards)
Check for CPUs more accurartely when ONLN != CONF.

There are two ways to use sysconf to ask about the number of
CPUs. When we're on a VM, we would sometimes get it wrong by asking
for the number of total CPUs (say, 64) when we should have been asking
for the number of CPUs online (say, 1 or 2).

Fix for bug 8002.
Revise some comments in router.c

Avoid the phrase "legally valid" (as opposed to valid but not legal)?
And document what functions really do.

Fix for bug 6935.
Document (on man page) which DNS record types Tor knows.

Fixes bug 7876
touchups on 78582760
Tweak consensus method 17 based on arma's comments

Instead of capping whenever a router has fewer than 3 measurements,
we cap whenever a router has fewer than 3 measurements *AND* there
are at least 3 authorities publishing measured bandwidths.

We also generate bandwidth lines with a new "Unmeasured=1" flag,
meaning that we didn't have enough observations for a node to use
measured bandwidth values in the authority's input, whether we capped
it or not.