Add gen.moment, a yieldable object that resumes after one IOLoop iteration.

Use this between requests in HTTP1ServerConnection to keep one connection
from monopolizing the IOLoop when there are pipelined (or just fast) requests
available.  This was causing increased variance in benchmarks using "ab -k"
(it also increased throughput, for reasons that are not yet clear, so this
change reduces observed speed in these benchmarks).
IOStream: do not listen for close events if there is no close_callback.

HTTP1Connection now only registers its close callback when it is done
reading.  This improves performance for synchronous handlers, which no
longer interact with the IOLoop as often.
Decouple read_from_buffer's search for the endpoint from consuming the data.

This lets us call find_read_pos from read_to_buffer_loop, avoiding some
unnecessary reads (e.g. it previously took a minimum of two recv calls
to serve an http request, but now we can do it in one).