kernel - Add lock canceling features

* The current (typically exclusive) lock holder can enable cancel mode
  by executing lockmgr(lk, LK_CANCEL_BEG, 0).  This call always succeeds.
  The lock state is not otherwise affected.

  Any current threads blocked on the lock or any future thread which
  attempts to gain the lock, who also specify the LK_CANCELABLE flag,
  will be canceled as long as cancel mode is active and their operation
  will return ENOLCK.

  NOTE! Threads which do not specify LK_CANCELABLE are not affected by
	cancel mode and their blocking locks will block normally.

  WARNING!  Cancel mode is not stackable.  The system will panic if you
  enable cancel mode on a lock where it is already enabled.

* The current (typically exclusive) lock holder can terminate cancel mode
  by executing lockmgr(lk, LK_CANCEL_END, 0).  This call always succeeds.
  Once canceled, any other threads that would block on the lock and specify
  the LK_CANCELABLE flag will block normally and not be canceled.

  The current lock holder can also terminate cancel mode by simply releasing
  the last lock with LK_RELEASE.  That is, a release where the lock count
  returns to 0.

* Lock canceling is an optional feature.  Your lock cannot be canceled unless
  you specify LK_CANCELABLE.
virtio_pci: Use device_probe_and_attach(), instead of DEVICE_ATTACH().

* By directly calling DEVICE_ATTACH(), we didn't get automatically created
  sysctl nodes (added in 8e4d13764bdfc916c23fb22158c65e486dce631c), and
  we didn't get automatic dmesg messages on child driver attachement
  (e.g. "vtblk0: <VirtIO Block Adapter> on virtio_pci1") .

* Since we have no direct equivalent to FreeBSD's device_attach(), use
  device_probe_and_attach(). This means we do a vtpci_set_status() cycle
  even if no matching driver is found.
starting work on porting virtio_balloon from FreeBSD
virtio_balloon now builds successfully
(hopefully) fix serializer handling
using contigmalloc instead of kmalloc
Add support for KVM cpuid flags and add msr #define-s. Add PV_EOI support.
Optimizing IPIs for kvm
making single_apic_ipi safe again
check for MP synchronized TSC on non-Intel CPUs as well
Making virtio_balloon less agressive
virtio_blk: Enable dump support. Partial sync with FreeBSD up to r252707.

* Fix a typo in struct virtio_blk_config, to make writecache_mode
  switching actually work.

* Add a workaround in sys/dev/virtual/virtio/virtio/virtqueue.c to avoid
  a serializer exit/enter pair while dumping.

* Reduce diff relative to FreeBSD's virtio_blk.c version.

* Adapt manpage, comment out description of the hw.vtblk.no_ident tunable.

* Updates are taken from FreeBSD's r252707, r252703 and r247829.