Add LIST_ delaration to event_struct.h to supplment TAILQ_

Generally, LIST_ can be a little faster than TAILQ_ for most
operations.  We only need to use TAILQ_ when we care about traversing
lists from tail-to-head, or we need to be able to add items to the end
of the list.
Use LIST rather than TAILQ for evmap_io and evmap_signal

These structures used TAILQ for the lists of events waiting on a
single fd or signal.  But order doesn't matter for these lists; only
the order of the active events lists actually matters.
Use LIST rather than TAILQ for evbuffer callbacks

There's no reason to traverse these out-of-order, and we never defined
the order that you'd get your callbacks on an evbuffer if you happened
to add more than one.
Use LIST rather than TAILQ for bufferevent_rate_limit_group members

Once again, there's no reason to keep these lists in the order we were
keeping them in.  Every time we needed to traverse them for any important
purpose, we started at a random point anyway.
Add event_enable_debug_logging() to control use of debug logs

Previously, debug logs were turned on if you built with -DUSE_DEBUG
and off otherwise.  This make builds with -DUSE_DEBUG hideously slow
and other builds unable to get debug logs.

This is based off a patch by Ralph Castain from October.  It tries a
little harder to avoid needless function calls, it doesn't require
stdbool, and makes the controlling parameter a mask rather than a
boolean so that we can later support enabling only the debugging
messages for the parts of Libevent you're trying to debug.
Optimize the case where we reinsert an existing timeout
Remove a needless base-notify when rescheduling the first timeout

We don't need to wake up the base when rescheduling the timeout that
will expire first: the base will already wake up, see that nothing is
ready, and go back to sleep.
Save a needless comparison when removing/adjusting timeouts
possible optimization: split event_queue_insert/remove into separate functions. needs testing
Make event_count maintainance branchless at the expense of an extra shift. Needs benchmarking
Avoid race-condition when initializing global locks

Previously, we did stuff like
   if (!lock)
      EVTHREAD_ALLOC_LOCK(lock,0);
for the evsig base global lock, the arc4random lock, and the debug_map
lock.  But that's potentially racy!  Instead, we move the
responisiblity for global lock initialization to the functions where
we set up the lock callbacks.

(Rationale: We already require that you set up the locking callbacks
before you create any event_base, and that you do so exatly once.)
Complain if the caller tries to change threading cbs after setting them

We never supported this; it was always fraught with errors; and I
don't believe there is a good reason to _want_ it to work.
Avoid a segfault when all methods are disabled or broken
Fix windows file segment mappings

Instead of mapping enough bytes for each segment, we were failing to
take into account the slop created by rounding the segment position
down to the nearest page.

Should fix bug 3142394 found by Sebastian Hahn.
Fix regress_ssl.c build on openbsd
Bump version to 2.0.12-stable.  Not release just yet
Changelog and new credits for 2.0.12-stable
Merge branch 'patches-2.0' of ssh://levent.git.sourceforge.net/gitroot/levent/libevent into patches-2.0
tweak date on changelog
Merge branch 'patches-2.0' of ssh://levent.git.sourceforge.net/gitroot/levent/libevent into patches-2.0