hw: reset scheduling timeout implicitely

This is needed as soon as we do inter-processor interrupts to
inform a processor about a remote modification in its scheduling plan.
In this case we can not explicitely decide wether to reset timer
or not. Instead we must decide it according to the choices of the
scheduler before and after the modification.

ref #1088
hw: inter-processor interrupt on remote scheduling

ref #1088
hw: rename Cpu_scheduler in Processor_scheduler

ref #1088
hw: rename Execution_context in Processor_client

ref #1088
hw: clean-up destruction of processor clients

ref #1088
hw: move Processor_client to processor.h

ref #1088
hw: don't do redundant inter-processor interrupts

At least with the ARM generic interrupt controller, inter-processor interrupts
are edge triggered and banked for all source processors. Thus it might be
possible that such an interrupt gets triggered redundantly until the targeted
processor is able to grab the kernel lock. As we're only interested in making
a processor recognize accumulative updates to its scheduler, we can omit
further interrupts if there is one pending already at the targeted processor.

ref #1088
hw: do inter-processor interrupt only when needed

The processor scheduler can determine without much overhead wether
the currently scheduled client becomes out-dated due to the insertion
of another client. This can be used to safe inter-processor interrupts
when a remote insertion doesn't imply an update of the currently
scheduled client.

fix #1088
hw: comment conditions of interprocessor interrupt

ref #1088
Genode::Connection: Mark as noncopyable

When an object derived from Genode::Connection is copied we had
strange issues. An example is that the first RPC invocation works
correctly but the second one blocks or even delivers incorrect data.

We can avoid this issue if the object is always passed by reference.
Ensure this by deriving from Genode::Noncopyable.