Interrupts should always hit the fast path now unless the user
moves the thread without notifying the driver

- add DEVPASSIOCVCPUMAP to bind pthreads to cores and establish
  a mapping between threads -> vcpus -> cores
- PCIPASSIOCSETUPINTR will now bind the interrupt to the right
  physical core/thread based on the vcpuid
- _setup_trapframe now correctly handles the case of a nested
  trap
- _set_intr_pending will now atomically block interrupts on the
  target vcpu