Express affinities via Cartesian coordinates

This patch introduces new types for expressing CPU affinities. Instead
of dealing with physical CPU numbers, affinities are expressed as
rectangles in a grid of virtual CPU nodes. This clears the way to
conveniently assign sets of adjacent CPUs to subsystems, each of them
managing their respective viewport of the coordinate space.

By using 2D Cartesian coordinates, the locality of CPU nodes can be
modeled for different topologies such as SMP (simple Nx1 grid), grids of
NUMA nodes, or ring topologies.
nova: unify code for normal and server threads
Attach affinity information to session requests

This patch extends the 'Parent::session()' and 'Root::session()'
functions with an additional 'affinity' parameter, which is inteded to
express the preferred affinity of the new session. For CPU sessions
provided by core, the values will be used to select the set of CPUs
assigned to the CPU session. For other services, the session affinity
information can be utilized to optimize the locality of the server
thread with the client. For example, to enable the IRQ session to route
an IRQ to the CPU core on which the corresponding device driver (the IRQ
client) is running.
lwip: use alignment solely of 4

Temporarily 64bit fix for issue #817.
run: disable libc_ffat test for some qemu versions

Disable qemu version known to be not working with the atapi driver.

Issue #827
Interface for setting CPU connection affinity
Shortcut for 'Xml_node::Attribute::value()'

Also provide accessor function 'has_attribute'.
init: Read affinity assignments from config

The assignment of affinities consists of two parts, the definition
of the affinity space dimensions as used for the init process, and
the association sub systems with affinity locations (relative to the
affinity space). The affinity space is configured as a sub node of the
config node. For example, the following declaration describes an
affinity space of 4x2:

<config>
  ...
  <affinity_space width="4" height="2" />
  ...
</config>

Subsystems can be constrained to parts of the affinity space using
the '<affinity>' sub node of a '<start>' entry:

<config>
  ...
  <start name="loader">
    <affinity xpos="0" ypos="1" width="2" height="1" />
    ...
  </start>
  ...
</config>
core: evaluate CPU session affinity argument
Update os/doc/init.txt with affinity information
stdcxx: create 'typeinfo' symlink

The 'typeinfo' header file is needed by the ICU library.

Issue #828.
libports: add ICU library

The ICU (International Components for Unicode) library is needed for Qt5.

Fixes #828.
noux: construct new child only if binary is valid

If a script is executed which uses a interpreter that does not exist the
construction of the child fails and potentially leaks memory because the
wrong delete operator is called.
Therefore the binary dataspace of the script and the binary dataspace of
the interpreter are now checked before a new child will be created.

Fixes #812.
hw & signal: consider initial SLAB blocks

By now Signal_session_component has allocated initial SLAB
blocks in constructor, wich crashed with the root
components assumptions about the RAM quota needs of
session creation. Thus, if the background allocator was already
exhausted from component allocation the session was created
with broken initial SLAB blocks.

fix #574
Implement more 'pthread' functions.

Issue #345.
base: increase maximum file name length

This patch increases the maximum file name length to support
'qt5_qnitpickerviewwidget.lib.so'.

Issue #345.
ldso: increase size of managed ELF dataspace

The size needs to be increased for Qt5 libraries.

Issue #345.
qt4: require 'qt4_deprecated' SPECS variable

To avoid build conflicts with Qt5, with this patch, 'qt4_deprecated' needs
to be added to the 'SPECS' variable (in specs.conf) when building for Qt4.

Issue #345.
libports: add Qt5

Fixes #345.
Fixup for previous commit

Adaptation to affinity-related interface changes.