Temporary fix for kdirent reading

We need to read exactly one entry.  This doesn't work with mntread right
now, since UFS returns 0 instead of an error when the read buffer is too
small.  That might be a bug.

If you notice directory entries that are missing when you do an ls, let
us know.
Fixes #s

Looks like we won't be able to hang reference counted objects off of
c->aux, such that those objects change as we gen new entries.  The final
culprit was devclone, which copies aux, but doesn't incref.  And later,
it may or may not call the device's close.

We can still put reference counted things on c->aux, but they need to
not change during walks.  Check out devpipe and devip for examples.