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.
buildworld - Attempt to fix m4 bootstrapping issue (2)

* m4 depends on flex which exec's (depends on) m4.

* Change m4 to not depend on flex and reorder the [b]yacc build to run
  before m4.  M4's lex file is now manually generated and made part of
  the source archive, and the Makefile simply compiles the .c version
  instead of trying to run flex.

  Any future update to m4 will require it's lex file to be manually
  lex'd.  Too bad, that's the way it goes.  M4 is a piece of crap and
  flex is an even bigger piece of crap for needing to exec M4.  I'm not
  going to play with this stuff more than I need to to make things compile.

* Remove conditionals from m4 .y and .l files.  They were wrong because
  they weren't necessarily reflective of which lexer was being run,
  and now they aren't needed at all.
kernel -- virtio: Implement virtio-layer lwkt_serializer for devices

* Switch virtio device targets (currently only -blk) to use a
  serializer for synchronizing per-target state. Thread the
  serializer through virtqueue_notify (release around kick) and
  into the bus interrupt setup code.

* Remove dump support from virtio-blk for now; it doesn't work and
  results in further panics from an incorrectly setup bio.

* Other cleanups of virtio-blk (de-indirect locks).
igb: Properly set RX ring in use upon enter/exit polling mode
Merge branch 'master' into gsocdrm_github