Fix stack pointer alignment for x86_64 platforms

The x86_64 ABI requires the stack pointer to be 16-byte aligned before the
call of a function and decreased by 8 at the function entrypoint (after
the return address has been pushed to the stack).

Currently, when a new Genode thread gets created, the initial stack
pointer is aligned to 16 byte. On Genode/Linux, the thread entry function
is entered by a 'call' instruction, so the stack pointer alignment at the
function entrypoint is correct. On Fiasco.OC and NOVA, however, the thread
entry function gets executed without a return address being pushed to the
stack, so at the function entrypoint the stack pointer is still aligned to
16 byte, which can cause problems with compiler-generated SSE
instructions.

With this patch, the stack pointer given to a new thread gets aligned to
16 bytes and decreased by 8 by default, since most of the currently
supported base platforms execute the thread entry function without pushing
a return address to the stack. For base-linux, the stack pointer gets
realigned to 16 bytes before the thread entry function gets called.

Fixes #1043.
Qt5: decrease memory amount needed for QtQWebkit

On 64-bit platforms Qt's JavaScript engine tries to reserve 1GiB of
virtual memory via 'mmap()', to be backed by physical memory on demand.
Genode's 'mmap()' implementation currently does not support on-demand
allocation of physical memory and tries to allocate the whole amount at
once, which is usually far more than needed.

With this patch, the amount to be reserved gets decreased to 32MiB.

Fixes #1041.
os: handle ipc error in server framework

When using the server framework, it might happen that the main thread
tries to forward a signal to the entrypoint, while the context of that
signal is already destroyed. In that case the main thread will get an
ipc error exception as result.

Related to #113
block: cache between one client and one device

This block cache component acts as a block device for a single client.
It uses fixed 4K blocks as caching granularity, thereby implicitly reads
ahead whenever a client requests lesser amount of blocks. Currently,
it only supports a least-recently-used replacement policy.

Fixes #113
fixup "block: cache between one client and one device"

Otherwise a lot of "Quota exceeded: init -> blk_cache" on NOVA 32 and
64bit.
base: extend thread test for stack alignment
hw: ease usage of the kernel log

ref #989
hw: use descriptive bool value names in ipc.cc

ref #989
hw: fix bug in IPC message-size calculation

ref #989
base: rename reload_parent_cap.cc

ref #989
base: provide env_context_area_rm_connection()

ref #989
base: provide helper class 'Placeable'

ref #989
base: provide helper class 'Reinitializable'

ref #989
noux: Noux_connection::context_area_rm_session()

This enables a forked process to update the capability of its
context area RM session.

ref #989
libc_noux & 64bit: fix printf format-warning

Normally for intptr_t the printf format PRIiPTR should be used. As Genode
printf doens't support this format we cast it to long int (intptr_t is int
for 32 bit and long int for 64 bit).

ref #989
noux & 64bit: fix printf format-warning

ref #989
base: make Expanding_parent_client reinitializable

This is needed to reinitialize Platform_env in forked processes.

ref #989
base: make Rm_connection reinitializable

This is needed to reinitialize Platform_env in a forked process later.

ref #989
foc: make cap_map and cap_alloc reinitializable

This is needed to reinitialize Platform_env in a forked process later.

ref #989
nova: make cap_map reinitializable

This is needed to reinitialize Platform_env in a forked process later.

ref #989