buildworld - Attempt to fix m4 bootstrapping issue

* Set the M4 environment variable to force the buildworld to use the
  bootstrap version of M4 in all passes.  This removes the need to
  manually build/install the m4 binary due to the recent major tools
  refresh.

* Force build ordering for some of the bootstrap utilities, particularly
  the m4 binary, so the binary is available to help build other bootstrap
  tools later on.
kernel - Do not allow (devfs) devices to be force-unmounted

* Do not force-unmount devfs devices.  Even more importantly, don't
  force-unmount devfs devices and then try to force-vflush them.

  Filesystems have always been responsible for flushing their underlying
  block devices.

  These situations occur during halt/reboot.

* Fixes at least one issue when hammer's volume-add is used to specify
  a block device in /dev which is then added to the root mount.  This
  created a situation where the /dev vs / unmount order breaks.

* Should also prevent e.g. the console or other vty hangers-on from being
  destroyed out from under active descriptors during a halt or reboot.