Refactors MSI code slightly

PCI/MSI code doesn't need to know about irq_h, which makes all of the
interfaces a little cleaner.

Also puts in some checks to prevent us from trying to turn on MSI and
MSI-X at the same time.
IRQ routing

Call route_irqs() to reroute a all IRQs for a particular vector to an os
coreid.  We don't support routing to multiple cores yet.
PCI: handles BARs for PCI2PCI devices

Though it turns out my hardware doesn't have any of these, so it hasn't
turned up as an issue.