Use add_callback_from_signal in benchmark.py's sigchld handler.

This would manifest as an occasional deadlock when an 'ab' process
finished.
Timeout micro-optimizations.

Use the (C) timedelta.total_seconds function when available.  But it's
still a bit faster to use numeric timeouts instead of back-and-forth
through timedelta, so do that instead in http1connection.
Optimize gen.with_timeout for tornado futures.

We can avoid some IOLoop and stack_context interactions if we know
that the Future will resolve on the IOLoop's thread.