Add a simple and rough hypervisor interface

Pull out the existing CPUID based hypervisor detection into a formal
interface so that we can later use it to detect multiple hypervisors.

Similar duplicate code exists in XEN and HYPERV, and should eventually
be consolidated.

This commit breaks the existing VMware detection which will be fixed
in a subsequent commit.
Add KVM VM guest enum type
Add detection of VMware and KVM to the hypervisor interface

While here, relocate the code for the VMware TSC frequency into
the VMware implementation. Eventually we should probably grow a
hypervisor interface for this.
Add KVM clock support

Only system time (timecounter) is currently implemented. Wall clock
support will be added later.