Cleanup destruction of RPC entrypoints

This patch introduces clean synchronization between the entrypoint
thread and the caller of the 'Rpc_entrypoint' destructor. The most
important change is the handling of the 'Ipc_server' destruction. This
object is in the local scope of the server's entry function. However,
since the server loop used to be an infinite loop, there was hardly any
chance to destruct the object in a clean way. Hence, the
'Rpc_entrypoint' destructor used to explicitly call '~Ipc_server'.
Unfortunately, this approach led to problems because there are indeed
rare cases where the server thread leaves the scope of the entry
function, namely uncaught exceptions. In such a case, the destructor
would have been called twice.

With the new protocol, we make sure to leave the scope of the entry
function and thereby destroy the 'Ipc_server' object as expected. This
is achieved by propagating the exit condition through a local RPC call
to the entrypoint. This way, the blocking state of the entrypoint
becomes unblocked. Furthermore, '~Rpc_entrypoint' makes use of the new
'join' function to wait for the completion of the server thread.
Linux: Robustness of socket life-time management

This patch improves the life-time management of socket descriptors and
addresses several corner cases exposed by the 'bomb' test.

The lookup and association of file descriptors with global IDs have been
turned into an atomic operation. Otherwise, multiple threads interacting
with the singleton 'ep_sd_registry' may override each other's
associations.

Closing the socket pair used for the reply channel has been implemented
via the RAII pattern to capture all corner cases, in particular
exceptions.

If blocking operations are interrupted by signals, we throw a
'Blocking_canceled' exception.

We preserve core's socket descriptor at 'PARENT_SOCKET_HANDLE' to avoid
a corner case where the parent capability is going to dup2'ed to the
same handle.

Support for 'Thread_base::join' within core to enable leaving Genode via
Control-C.
libports: add test/libc_resolv target

libc_resolv is used by noux-pkgs and is only a runtime dependency but
therefore needs to be build.
Terminal: fix color variable initialization
Noux: add TIOCSETAF/W support

These ioctl() request are used to set attributes of the underlying
terminal device.
Noux: add TIOCSETAF/W dummy to Terminal_io_channel
Noux: use Terminal::Connection as singleton

We will reuse the terminal connection in the stdio filesystem
to implement /dev/tty. Therefor we need to access the terminal
from different locations which is simplified if it is provided
by a singleton.
Noux: add stdio_file_system

This file-system provides a connection to the terminal through a device
node, e.g. /dev/tty.
Noux: add random_file_system

The random file-system provides an arc4 based urandom implementation
which is needed for OpenSSL.

NOTE: the Arc4random class currently _does not collect enough_ random
bytes!
Noux: add ioctl() to Vfs

File_io_channel now includes ioctl() because pseudo devices which are
implemented as a file-system, e.g. /dev/tty, are controlled via ioctl()
requests. The method is exported to the Vfs through the Vfs_io_channel
class.
Noux: add noux-pkg/openssh
Noux: add noux-pkg/openssh interactive run-script

Currently only ssh(1) is tested but scp(1) should also work. Noux
still misses some functionality which is needed for sshd(1).
Remove unneeded PDBG() messages
libports: set getrlimit() to weak in libc

This functions needs to be overriden by libc_noux.
Noux: add getrlimit() dummy to libc_noux

As long as there is no proper getrlimit() support prevent programs
from using it by providing a dummy implementation.
L4Linux: hold queue lock in block driver (fix #395)

When finishing a block request in the L4Linux block stub driver,
we#ve to hold the queue lock before using __blk_end_request_all, or
simply use blk_end_request_all instead. Moreover, this commit simplifies
the lock/unlock behaviour when the block queue has to be stopped, or resumed.
Thanks to I. Ismagilov for these suggestions.
Noux: add tar hardlink support in 'stat()'

Fixes #481.
Noux: increase ENV_MAX_LEN

Fixes #515.
vea9x4: Fix bug in board declarations.

Fix #516
base-hw: Full quota upgrading in signal receiver.

Fix #518