sched: core: implemented partial preemption.

With preemption enabled, threads now have a time slice which will be
checked every time the `schedule()' function is called. If the time
slice is over, THREAD_NEED_RESCHED_FLAG is set and the slice is reset to
CONFIG_TIME_SLICE (defaults to 5ms).

`sleep()':
Use sleep to sleep a thread for given amount of time (in ms). The thread
is returned to the run queue when that amount of time is over.

Signed-off-by: Michel Megens <dev@michelmegens.net>