Add 'String<SIZE>' buffer type to 'util/string.h'

The new 'String' buffer type is meant to replace the manually created
character buffers that are scattered throughout Genode. It plainly holds
a null-terminated string to be stored as a member variable (e.g., a
session label) or passed as RPC argument. It is not intended to become a
string API.
Add resource-balancing support to parent interface

This is just the interface. The implementation is still missing.

Issue #887
Implement resource-balancing in parent interface
base: Unify 'Platform_env' across platforms
base/env: Implementation of 'Expanding_parent'
init: Transfer slack memory to children on demand
base: Use distinct error for ref_account mismatch
core: Don't account RAM metadata to RAM quota

The meta data for allocations should be accounted to the session quota
instead of the RAM accont managed by the session.
core: Fix off-by-one in quota check

The check was one byte too rigid. ;-)
Test for 'Parent::resource_request' interface
os: Add resource balancing-support to 'Slave'

In order to be able to dynamically balance resources of slaves, we need
to provide an accessor to the slave's RAM session and a way to issue
yield requests.
Test for yielding resources
terminal_mux: Add 'j' and 'k' keybindings
terminal_mux.run: LOG output of terminal_log

This patch tweaks the route of 'terminal_log' such that a LOG session
request of this program is directed to the parent rather to itself.
cli_monitor: Resource-balancing support

This patch introduces new commands for dynamically balancing RAM between
subsystems. The 'status' command prints a table with the RAM status of
each subsystem. The 'ram' command changes the quota or a quota limit of
a given subsystem. The quota limit can be defined to allow the on-demand
expansion of the quota. Finally, the 'yield' command can be used to
instruct a subsystem to yield a specified amount of resources.

For trying out the new commands, a so-called 'ram_eater' example has
been added to the 'terminal_mux.run' scenario. This program simulates a
subsystem with a growing demand for resources, yet with the capability
to yield resources when instructed by the parent (i.e., cli_monitor).

Besides implementing the new features, the patch splits the
implementation of 'cli_monitor' into multiple files.
nova: create sm of each thread in pager

Mainly simplification of the code and getting rid of reserved (Genode) special
cap selectors in the syscall-generic.h file.

Issue #478
nova: support requesting multiple event portals

Enables us to request the exception handler portals at once instead each
separately.

Issue #478
nova: request native ec cap via pager

Prerequisite to get rid of the base-nova special native_cap method in
cpu_session.

Vancouver/Seoul bootstrap code gets also much simpler.

Issue #478
nova: remove native_cap method from cpu_session

Remove native_cap method which caused the cpu_session implementation of the
gdb server to fail.

Issue #478
nova: fix thread in page fault and getting paused

If a thread caused a page fault and later on get be paused, then it left
the recall handler immediately due to the pause call instead of staying
in this handler.

Add some (complicated) state machine to detect and handle the case. Still not
waterproof, especially server threads may never get recalled if they never get
a IPC from the outside.

Fixes #478