* Add -t option, yet undocumented, to specify that one wants to use
the ruletab mode. This mode allows to load either all rules for
the specified mountpoints (1) in ruletab, just the generic rules (*)
and for /dev (2), or all the rules specified in the ruletab (3).
Mode (1) is entered by passing -m with a specific mount point
that shall not be 'boot' or '*'.
Mode (2) is entered by passing '-m boot'
Mode (3) is entered by passing '-m *'

* Separate out an ioctl structure from the devfs_rule struct called
devfs_rule_ioctl.
This avoids unnecessary complications like copyin, and it avoids
problems caused by userland reporting wrong sizes.

* Also separate the rule_type from the rule_cmd into different fields
in both structs.

* The TF_XFLAGS field in the trap frame was not getting cleared on trap and
syscall entry. This field can cause a mailbox signal to be flagged in
the signal frame which in turn can cause the next blockable system call
to return EINTR.

* Use default_dev_ops by default for make_autoclone_dev so that opens
and other operations on it fail when it fails as a clone handler.

* Accept NULL as argument for bimtap for make_autoclone_dev, so that
there's no explicit need for a clone bitmap to use this function.

* Add destroy_autoclone_dev as a counterpart to make_autoclone_dev.

* Const-ify a bunch of char *

* Use kstrdup instead of kmalloc + memcpy magic at a few places where
this makes sense.

* Rework atime/mtime/ctime as advised by Simon Schubert on IRC.

* Clean up devfs_clone by getting rid of old code and return NULL
if cloning fails, else return the cloned device.

* Sync up all pending devfs operations just before calling into the
clone handler, so that issues with device deletion/creation are
dealt with appropriately.

* Change cloning in devfs_spec_open to match devfs_clone changes and
also check the return value of devfs_create_device_node, as it can
return NULL. If cloning fails, the cloning device will be opened,
which will have the default_ops and hence will fail returning
ENODEV.