* Change make_dev_covering and all other related functions to use a
backing dev_ops instead of a backing cdev.
This allows for a more generic use of make_dev_covering, without the
need of an explicit backing cdev.

* Also change make_autoclone_dev to use the new make_dev_covering to
avoid maj/min collision between base clonable devices.

mountroot didn't work for the UFS with serial numbers case since the
data for '/' is taken from fstab and that would have a devtab label
in it and we're not setting vfs.root.mountfrom explicitly for UFS.
We don't want to, either.

If a disk has a corresponding entry in /dev/serno with identical
major/minor, use that for all further references of the disk in the
installation process.

In the installed system, set up a /etc/devtab entry (with the labels
named disk0, disk1 etc. using the order of the disks appearing in
'sysctl kern.disks' output) and use this label for the system's
/etc/fstab entries.

/boot/loader.conf still has to use /dev/serno for its vfs.root.mountfrom
entry.

The dumpdev entry in /etc/rc.conf could use the devtab label but (as
of this commit) doesn't do so yet. This will be fixed at a later point.

If no /dev/serno is found, or if no corresponding entry in /dev/serno
is found for a specific disk, we use the traditional scheme.

* ATAPI commands sent via the SCSI layer which are less then 16 bytes
are now zero-padded to 16 bytes. The SATA protocol itself just sends
the whole FIS, so no more or less data is being sent. But extra bytes
will not be sent as zero.

* Some drivers pickup devices asynchronously in a manner which the
intitial CAM probe does not cover. Try to give these drivers a little
extra time to pickup devices before mounting root. This is a hack.

* Ship a git repo for /usr/pkgsrc and (for the gui build) /usr/src.
Installations from the ISO can then do an incremental update using
the git repo as a base right off the bat, saving users a lot of
time and effort.

We shouldn't use non-system arguments for function arguments in headers,
since it might collide with other symbols. In this case it collided
with exp(3) from math.h, both included by top(1) (with indirections).