remove mapping of pages backing ramdisk

make sure to remove the kernel mapping of the pages backing the ramdisk
when it detaches. i had this in the code in the first place, but then
pedro.

reminded to me by drahn@ and oga@.
Sync fallout.
Make our armv7 startup code PIC.

This helps us to compile only one kernel which can be booted
on multiple systems.

On bootup we figure out the memory we're running in and then
use this information to create the startup pagetables, instead
of using static information.

ok patrick@
One kernel to rule them all.

Previously we had to build multiple kernel and use multiple
kernel configs for each SoC.  Using Dale's PIC startup code,
we can now collapse all configs into a single one.

Also, we take care of platform specific operations.

Due to the OMAP SMC issue, we need to introduce a single
global variable indicating that it's an OMAP SoC.
There's probably a better way to do that soon.
Rename sunxi intc names to not clash with omap one.
As every SoC is using the same armv7 bus, we need to take care
that only the correct instance of this bus is attaching.
Only compile one GENERIC kernel in the release process.

Update load addresses.
Only compile one ramdisk kernel and use it multiple times.
fix assertion in tmpfs_snap_rdwr()

we can't rely on VOP_ISLOCKED() for a KASSERT(), since the vnode passed
to us might be a specfs vnode with a dummy lock.

ok natano@
don't unlock the vnode in tmpfs_snap_load_vnode()

don't unlock the vnode in tmpfs_snap_load_vnode() before returning; have
the caller unlock it instead. this is better since the caller is already
responsible for locking the vnode, therefore all locking management
happens in one place now.

ok natano@
open and close vnode when mounting in tmpfs

follow traditional filesystem procedures in tmpfs_mountfs() by opening
the vnode before passing it to tmpfs_snap_load_vnode() and closing it
afterwards. this gives tmpfsrd(4) the opportunity to detach as expected.

ok natano@
allow tmpfsrd(4) termination to happen only once

prevent tmpfsrd(4) from being terminated multiple times by introducing a
flag and checking it before workq_add_task().

ok natano@
fix handling of mounted wapbl devs in spec_fsync()

fix handling of mounted wapbl devices in spec_fsync(); all we need to do
in such case is to call ffs_wapbl_fsync_vfs() and return. there is no
need to proceed further in spec_fsync(), where we might get stuck due to
perpetually delayed journal entries, since spec_fsync() doesn't know
about wapbl and can't flush the journal.

ok natano@
Sort mount options/flags alphabetically.

ok pedro@
Document MNT_LOG flag.

ok pedro@
uao_grow(): assert lock before inspecting contents

no functional change.
uao_grow_hash(): remove double assertion
whitespace;
update e-mail address;
prevent 'error' from being used uninitialised; gcc