Eliminate MaxOnionsPending; replace it with MaxOnionQueueDelay

The right way to set "MaxOnionsPending" was to adjust it until the
processing delay was appropriate.  So instead, let's measure how long
it takes to process onionskins (sampling them once we have a big
number), and then limit the queue based on its expected time to
finish.

This change is extra-necessary for ntor, since there is no longer a
reasonable way to set MaxOnionsPending without knowing what mix of
onionskins you'll get.

This patch also reserves 1/3 of the onionskin spots for ntor
handshakes, on the theory that TAP handshakes shouldn't be allowed to
starve their speedier cousins.  We can change this later if need be.

Resolves 7291.
Use a TAILQ, not a singly-linked queue, for the onion queue.

This makes removing items from the middle of the queue into an O(1)
operation, which could prove important as we let onionqueues grow
longer.

Doing this actually makes the code slightly smaller, too.
Record and report the overhead of how we handle onionskins.
Better handling (I think) for onionskin timing w jumpy clocks

The fix: Instead of clipping huge/negative times, ignore them as
probably invalid.
Update to the January 2013 GeoIP database.
Make the = at the end of ntor-onion-key optional.

Makes bug 7869 more easily fixable if we ever choose to do so.
Fix bug 7341.

Fix cannibalize, rend circ and intro circ timeout handling.
Bug 7691: Send a probe cell down certain types of circs.

In general, if we tried to use a circ for a stream, but then decided to place
that stream on a different circuit, we need to probe the original circuit
before deciding it was a "success".

We also need to do the same for cannibalized circuits that go unused.
Bug 7341 code review fixes.
Bug 7691 review fixes.

Also add in the random nonce generation.
Mention name of the transport used when we learn the fpr of a bridge.
Handle EWOULDBLOCK as EAGAIN if they happen to be different.

Fixes bug 7935.  Reported by 'oftc_must_be_destroyed'.
Merge branch 'bug7935'
Merge remote-tracking branch 'mikeperry/bug7691-rebased'
Merge branch 'bug7869'
start folding in the changes entries
Reject create/begin/etc cells with {circ,stream}ID 0.

Otherwise, it's possible to create streams or circuits with these
bogus IDs, leading to orphaned circuits or streams, or to ones that
can cause bandwidth DOS problems.

Fixes bug 7889; bugfix on all released Tors.
Merge remote-tracking branch 'origin/maint-0.2.2' into maint-0.2.3
Merge remote-tracking branch 'origin/maint-0.2.3'
Revert junk accidentally included with "start folding in the changes entries"

Looks like Roger's debugging code wanted to take a tour of the world
outside his sandbox.

This reverts part of commit 19d37202362c0298ae2f3954b0065ccfcef0dbda.