Refactor periodic events
Right now we invoke a truly huge array of things from second_elapsed_callback() and run_scheduled_events(). There are at least 23 separate static time_t values that we do a comparison against every time a second elapses.
This is a really goofy way to handle periodic events. Let's refactor this to instead use libevent's timing code. In addition, we could make the timers first-class, so as to allow better introspection of Tor's status wrt each timer.