Use pax(1) to build the file system for bsd.rd.

ok pedro@ (for amd64)
ok patrick@ (for armv7)
arm: fix setjmp/longjump by using a different approach

The setjmp regression tests found an issue which I have tried
to fix.  Apparently our current implementation is not 100%
correct, although I have not found the actual failure.

This change is inspired by FreeBSD's code.  Previously we
had a pointer to the jmp_buf and incremented it with every
command we did.  FreeBSD stores the base pointer instead
and accesses the buffer relative to that pointer.

Using this way, setjmp regression tests seem happy now.

"seems mostly reasonable" drahn@
arm: update setjmp to use defines instead of magic values

Update the arm setjmp header with defines from FreeBSD.
Those correspond exactly to how we're doing it now.

Replace magic values in setjmp with those defines.
arm: update PSR bits and modes

ARM has two new modes, hypervisor and monitor, used to
support virtualization.
arm: fix ampintc to actually support more than 32 interrupts
arm: init platform after FDT, so we can use that information
arm: improve agtimer for fdt and kvm support

 * If we're running as virtual machine, use the virtual timer,
   otherwise keep running with the physical.
   Note: We do not yet know how to differentiate both.
 * Use FDT to read and register all the interrupts pins.
 * Do not accept IRQ if istatus is not set.
arm: Implement a simple fdt bus.

Convert virtbus to use it.
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!