Fix some nagging bugs.
We were not processing the timeout queue because we got stuck forever in the loop that processed events. Now before looping back to sysread, make sure there is something to read so we don't block. When we startup or re-read the DB state, ignore really old state timeout values; e.g., for nodes that have been dead for ages but happen to be in a state such as SHUTDOWN that has a timeout. In the main loop, handle any re-read of the DB state before testing the queue length to see if we can do a blocking poll. Re-reading the state may add timeouts to the queue.