Hook kernel preemption back and allow "total" preemption.

kernel.preemption = 2, will make any higher priority thread preempt
the current thread, if and only if they are on the same cpu.

Highly experimental, performance drops (since contention on kernel
lock causes even more context switches).

kernel.preemption = 1 still allows preemption just for interrupt
threads.