kernel: Add more detailed VM detection.

Previously, the kernel global 'vmm_guest' was either 0 or 1 depending
on the VMM bit in the CPU features (which isn't set in all VMs).

This commit adds more detailed information by checking the emulated
BIOS for known strings. The detected VMs include vkernel, which
doesn't strictly fit into the category, but it shares enough
similarities for this to be useful.

Also expose this information in a read-only sysctl (kern.vmm_guest).

The detection code was kind of adapted from FreeBSD (although their
kern.vm_guest works differently).

Tested-by: tuxillo
kernel/vfs - Fix a refcount check in vclean_unlocked()

- vx_get() actually adds a ref so you actually need to count
  with that.
sbin/hammer - Fix a wrong error message.
sbin/hammer - Remove trailing '/' from paths.

  When operating PFSes through symbolic links, it was not
  possible to specify the trailing backslash since that
  translated to the PFS root dir instead of the symbolic link
  to the PFS itself. This caused problems when upgrading or
  downgrading PFSes (and probably in other cases too).
  The error was "Directory not empty".

  This commit should solve those cases, but keep in mind
  there are other cases where it is actually not possible
  to complete certain operations (like while destroying
  PFSes).

Reported-by: Siju George, others