Kernel alarms can run in IRQ or RKM context

Some alarms want to run in IRQ context, and some want to run as RKMs.  We can
only have one tchain, which manages the timer IRQ, and the tchain is the tool
to manage that, regardless of IRQ vs. RKM context.

Alarm handlers that run in IRQ context will have access to the HW TF.

Check out fbee73f5ee for when we switched it from IRQ -> RKM in the first
place.  There are a few alarms that want to be RKMs, due to locking issues.
You can't send_event() from IRQ context, for instance...
Kprof uses an IRQ alarm

Oprof is still hacked into the timer IRQ.  Will get to that soon.
Fixes ksched's alarm handler

Was sending another RKM, even though the old __kalarm itself was an RKM.  No
reason to do that other than laziness.