Implements ReadHint for Hup for Linux

This implements the first part of the strategy outlined in #4.

It updates the tests to take the read hint in the handlers, and
specifically confirm that they get the DataHint first and then the
HupHint.

I believe that the hints are implementable on all of the backends we
intend to support, so I consider it a bug if those tests don't pass on a
supported platform.

Note that this information is called a "hint" because you still need to
handle errors in your read handler, but this may allow you to skip the
extra `read` syscall as an optimization.

This PR supersedes #5.
This should probably be bitflags since there can be multiple available states, for example data + hup?