libknc: fix up knc_read() in the blocking case.

knc_read() should return at least 1 byte if you are in blocking
mode.  The previous code issued a blocking read but may not have
received an entire packet thus returning no data.

We also change knc_fill to return the errno that it received as
well as performing a tiny bit of code cleanup and introducing a
XXXrcd comment chatting about how we might want to label EOF as an
error.