Changes upd(4) to set battery-dependent sensors *status* to
SENSOR_S_UNKNOWN when BatteryPresent is set to Off, instead of
invalidating. This has been around for months and showed itself working
in some tests environments.

With feedback and inputs from Stuart Henderson (sthen at openbsd org).
Improves battery caveats explanation on upd(4). Initial writing by me,
reworked english from Stuart Henderson (sthen at openbsd org).
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!