Ahmed and Sebastian wanted additional lockdep_assert*() macros and ran into header hell.
Move the IRQ state into per-cpu variables, which removes the dependency on task_struct, which is what generated the header-hell. And fix IRQ state tracking to not be affected by lockdep_off() (it really should not have been anyway) and extends IRQ state tracking across (x86) NMIs.