vmap_pmem_nocache()

Maps in physical memory to the kernel's VA space, but with caching
disabled (if available).  We'll need to use this for device MMIO.
MSI-X support

Adds support for MSI-X interrupts, including routing of individual
vectors to cores, via the irq_handler.

Cleaned up MSI a bit too, extracting common code (they use the same
MSI addr and data format).

Still needs a little cleanup and synchronization support.