x86: reorganizes IRQ/trap vectors (XCC)

LAPIC IRQs are now the highest priority interrupts on x86.  Bits 7:4 of the
vector define the priority class, and 3:0 are largely ignored.

Higher priority IRQs will interrupt lower priority ones, if CPU IRQs are
enabled.  For instance, a NIC IRQ handler that enables IRQs can be interrupted
by a local timer tick, which is useful for profiling.

You need to rebuild userspace apps.

Also note that while I changed the 32 bit code, we currently don't compile on
32 bit for a few minor reasons.
x86: enables IRQs globally during IRQ handling

This allows IRQs to be preempted by higher priority IRQs.  If handlers need
IRQs disabled, then they need to do so themselves.  IRQ-save spinlocks will
still work, since they disable IRQs on the CPU.

I don't have IRQs enabled during trap processing, notably page faults, yet.
It's probably okay to do so right around handle_page_fault(), though that's
tricky code.  I'll look in to turning it on if it becomes an issue.
Kprof samples during the timer IRQ

It's a bit cheap, since the timer won't rearm til we handle RKMs.  This means
that during heavy activity, we might not take the samples as frequently.  I've
got some ideas to fix this.  For now, we can at least get a sample from IRQ
context.
set_frame_pointer() for reset stacks

Helps with backtraces, so we can check for FP = 0.
backtrace_list()

Extracts the backtrace into an array of PCs.