Move context area definition to native_type
NOVA: maximize contiguous virtual space for 32/64

Use virtual regions for memory used during core initialization behind context
area. Enables us to start Vancouver VMs up to 1280 MiB, which requires
large virtual regions of contiguous aligned memory.

Exclude used virtual regions of echo and of pager thread in core.
NOVA: move context area

Move the context area close to the end of the virtual user available address,
so that Vancouver can obtain as much as possible of the lower virtual address
range for VMs.
64bit fix for region dump
Vancouver: Reserve VM memory region early

Reserve memory region for VM as early as possible before any other
memory allocation happens. Otherwise it could happen that heap
allocations will use part of the virtual region we require for the VM.
Allocate first heap requests from bss

The exception initialization and handling in gcc_eh allocates early (_main)
memory before executing main. In Vancouver the virtual
region from [0,VM size) must be reserved. Vancouver fails if the memory
allocated by the exception handling and the static objects was allocated
inside the [0, VM size) area.

To circumvent the situation allocate the first memory pieces for the heap
from the bss.
Vancouver: zero initialize memory of the heap

Classes in Vancouver expect to get zero initialised memory when using memory
from the heap. Some classes don't initialize member variables as they should
do.
Vancouver: dimension VM size dynamically
Vancouver: Make sure context area gets reserved
Vancouver: make debug output configurable
Vancouver: map solely requested memory region

Don't map all memory of the VM at once, instead only the one permitted
by the memory model. Otherwise memory regions get mapped which must not,
where each instruction and memory access have to cause an exception in
order to emulate it step by step.
NOVA: fix overflow in address check
Vancouver: catch exception during module loading

Catch any kind of exception we get from the rm_session during module
loading. Panic if modules can't be processed (too big images and so on)
Noux, libc_terminal: initialize 'stat' buffer

Initialize the 'stat' buffer in the 'stat()' function to avoid potential
non-deterministic program behavior.

Fixes #362.
Fix UDP checksum calculation (fixes #360)

Missing parantheses around the calculation of last byte address in a UDP
Packet led to dereferencing the wrong value, thereby the UDP checksum
calculation failed, whenever an odd byte-count UPD packet was calculated.
Many thanks to Markus Partheymueller who discovered this issue and its
resolution.
lwIP: Rewrite NIC packet allocation

Use 'Nic::Packet_allocator', wait for acknowledgements if packet allocation
fails. Updated 'lwip.run' and 'genode_org.run' to support OMAP4 correctly. Use
memcpy to copy PBUFs

May resolve issue #347
libc: Change malloc's allocator

Use slab allocators for small object sizes, do it the usual way otherwise.

This patch is related to #363. Using this optimization may be a viable
alternative to switching to the FreeBSD's malloc implementation.
libc: Decrease noise level of debugging output

Changed 'libc_fs', 'libc_lwip' and 'libc/clock_gettime'
Noux: fix previous attempt of fixing SYSCALL_READ
Noux: close all file descriptors on child exit

With this patch, when a child exits, all of its open file descriptors get
closed immediately. This is necessary to unblock the parent if it is
trying to read from a pipe (connected to the child) before calling
'wait4()'.

Fixes #357.