Correctly handle reads of a partial header.  #45

If a partial header was read, we previously did not return to the
poll loop.  Instead, a read into the data buffer was attempted.  If
that read actually succeeded (that is, a packet arrived between the
two read calls), then the next attempt to read the header resulted
in garbage size/offsets being attempted.

The fix is to simply check for a partial header read and return to the
poll loop immediately if one occurred.