hw: fix scheduler timing on prio preemption

Previously, the timer was used to remember the state of the time slices.
This was sufficient before priorities entered the scene as a thread always
received a fresh time slice when he was scheduled away. However, with
priorities this isn't always the case. A thread can be preempted by another
thread due to a higher priority. In this case the low-priority thread must
remember how much time he has consumed from its current time slice because
the timer gets re-programmed. Otherwise, if we have high-priority threads
that block and unblock with high frequency, the head of the next lower
priority would start with a fresh time slice all the time and is never
superseded.

fix #1287
init: restrict cpu_sessions to configured affinity

Fixes #1289
tool_chain: update GCC to version 4.7.4

Fixes #1051.
dde_linux: fix bug in find_next_zero_bit_le

value '1' has a default type of int, but long is needed to cover all 64 bits
hw: clrex during context switch (Fixes #1196)
hw: fix panda instability on kernel exits

Invalidating all branch predictors before switching the PD
fixes instability problems on Panda and has not much effect
on the performance of other boards. However, we neither know why
this is a fix nor wether it fixes the real cause of the problem.

fix #1294
noux: reinitialize Genode::config
okl4: declare read-write-lock as volatile

GCC 4.7.4 and newer seems to optimize the lock-variable accesses more
radically, which uncovered the missing volatile qualifier and resulted
in:

Assertion "(int)locked >= 0" failed in file '.../okl4_x86/kernel/include/kernel/read_write_lock.h', line 151 (fn=f0104771)
--- "KD# assert" ---