Rework of the X86 irq stack handling:

  The irq stack switching was moved out of the ASM entry code in course of
  the entry code consolidation. It ended up being suboptimal in various
  ways.

  - Make the stack switching inline so the stackpointer manipulation is not
    longer at an easy to find place. This also gets rid of the indirect
    call.

  - Avoid the double stack switch in interrupt return and reuse the
    interrupt stack for softirq handling