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.
Fix typo in tmpfsrd.4.
remove all traces of rd(4) from the tree

prodded by and ok natano@
fdtbus: enable driver attachment order

Previously we iterated over every fdt node and then looked for a
device that is compatible to it.  Unfortunately, this does not
work out well for us.

E.g. the i.MX6 clock driver needs to be run before any other driver.
To achieve that we iterate over every driver and then iterate over
every node and see if it's compatible.  Using this approach we can
control which driver attaches first, depending on the order in
the files.* file.
virt: Do not printf the device name a second time...
fdtbus: Don't print the driver we're looking for.
RAIDframe is dead; ok pedro@
cvs is dead; ok pedro@