There were actually two distinct locking domains in xen_intr.c, but they
were sharing the same lock. Both xen_intr_port_to_isrc[] and the x86
interrupt structures needed protection. Split these two apart as a
precursor to splitting the architecture portions off the file.
The call structures around xen_intr_alloc_isrc() were rather perverse.
Notably the allocation function should be taking care of locking for
interrupt allocation needs and should also be handling the reuse of
unused interrupts.