Change uhidev(4) set/get report functions in various way.

Always pass the parent uhidev(4) descriptor corresponding to the single
USB device with multiple reportIDs instead of a child.

Make uhidev_get_report() aware of non NUL reportID by prepending a byte
to the given buffer, just like uhidev_set_report{,async}() already do.

Return the number of bytes written or read upon success and -1 otherwise.
This allow callers to deal with short reads without having do mess with
xfer error codes madness.

Reviewed and tested by David Higgs.
Handle UPSes with broken report descriptors.

As reported by David Higgs some UPSes might send fewer bytes than
requested.  When such thing happens, do like apcupsd and adjust
the size of the given descriptor.

Based on a diff provided by David Higgs, thanks!
Make sure you'll never look at stack garbage, prodded by kettenis@.
convert bcopy to memcpy/memmove. ok krw
dragonflybsd has added a urio driver. conservation of urios requires
that we delete ours, which isn't actually useful.
ok mpi sthen
urio has been removed
remove urio
remove urio
regen
slightly reshuffle some code to reduce the diff with portable;
no functional change
Do not blindly dereference hw_vendor and hw_prod without checking them for
NULL first, for they are not guaranteed to be allocated.
Found the hard way by Tobias Stoeckmann; ok deraadt@
The utwitch(4) driver was never added here.  Obviously it belongs in the
"Human Interface Devices" section.
use a local swapbytes function instead of relying on undefined
overlapping swab behavior. vaguely ok kettenis
update swab() to match the current posix definition. "rationale: none."
rewrite the function to be simpler as well. the compiler can unroll the
loop for us if necessary.
ok schwarze