Remove obsolete TODO.zfs file

The file has not been updated since May 2013 so perhaps it's time to finally
remove it...

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
sched: add "sched_preempt" tracepoint

Before commit 5f5b6144a5950e5b6897450a51f424ab28df3812, we had a
sched_preempt tracepoint. The tracepoint still exists, but it wasn't
used. This patch uses it again, with a different meaning.

What "sched_preempt" marks now is a case where a running thread
was preempted. I.e., the scheduler switched to a different thread
despite the original thread still being runnable.

Note that every sched_preempt event is also a sched_switch event.

In practice, a "sched_preempt" can happen in one of four basic cases:

1. The running thread wake()s another thread on the same CPU, and
   the scheduler decides to switch to the woken thread instead of
   continuing to run the waker.

2. Similarly, an interrupt handler can wake() a thread on this CPU
   and reschedule, and if the scheduler decides to switch threads,
   this is a preemption. This happens, for example, when a thread
   waits on a timer.

3. The preemption timer expired, causing the scheduler to run and
   notice that another thread has become the one with the lowest
   runtime, so it runs that thread instead of the running one.

4. Another CPU woke up one of this CPU's threads, and sent this CPU
   an IPI. The sheduler runs and can decide to switch to the newly
   woken thread.

Note: currently, when a 1-vcpu OSv is completely idle, we see 1000
sched_preempt's per second. This is expected, because of the
page_scanner_thread: This thread timer to wake it 1000 times a second,
and each time it is woken it preempts the *idle thread* which is
runnable all the time.

Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>