sched: core: fixes on rq and thread queue's

Fixed a few issue's with thread queue's:

* Fixed up the parameter list of rq_remove_wake_thread and co. These
  functions now take an additional RQ argument (should typically only be
  the RQ of the executing CPU).
* Added thread_remove_from_wake_q, thread_remove_from_kill_q. These
  functions only function if the `struct thread::rq' pointer has been
  set. If that is not the case, these functions return silently.

* Added `raw_rq_remove_thread_noresched'. This function removes the
  given thread from the given run queue without sending any reschedule
  signals in any case. Should be used in functions editing the Q of
  another CPU or when editing queue's without interruption is required.

Added the a basic priority round robin scheduler

* No dynamic priorities yet.
* Queue's are sorted with increasing priority (most important threads
  first).
* All inteface functions assume that the correct locks have been
  acquired (or interrupts have been disabled).

Spinlocks:

* Added raw spinlock calls. These calls wont cause a (possible)
  preemption (not yet implemented).

Signed-off-by: Michel Megens <dev@michelmegens.net>
usr: schedtest: added a scheduling unit test

Unit test to test the functionality of the scheduler.

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