Fix IOStream.reading when Futures are used.

Reduce some duplication in IOStream _handle_read and _try_inline_read.
Add a `streaming` option to _run_read_callback and move all calls to _consume
into that method.
Read less aggressively in IOStream.

Previously, we would drain the socket buffer into the IOStream read buffer
before trying to satisfy application requests.  This would result in
unnecessary memory use, and on a fast network reads could fail because the
buffer would fill up.  Now we stop reading when we can satisfy the current
request (at least for read_bytes and read_until with max_bytes; unbounded
read_until still reads aggressively).

This commit includes a change to IOStream close_callback semantics.  Since
the only way to reliably detect a closed connection (across all IOLoop
implementations) is to read past the end of the stream, the IOStream will
not detect a closed connection while there is some buffered data that could
satisfy a future read.

Closes #772.