dd: use sharebuf and print more information.
zero: added missing DEV_OPEN.
random: support DEV_SHFILE.
Use the template-solution for CREATE/CLONE.

Now that we have a recent cross compiler for all architectures,
we can make use of C++11 for that instead of using macros.
Fixed waitchild: return -ECHILD if there is no child.
Changed asget: move buffer ownership to caller.
Improved job control in shell.

We can list the jobs running in background now and kill them
via the builtin kill (no external kill anymore). Additionally,
useless header files have been removed.
Fixed header include.
Fixed printf format string.
Removed unsafe stdio functions. They aren't used anyway.
Removed wait() and notify() syscalls.

They complicate the kernel and are not really necessary. wait()
was typically used for cases where e.g. getwork() was called
non-blocking for doing some finishing tasks when there is no
more work currently. Another and arguably better solution is to
only call getwork() non-blocking if there is something to finish
and otherwise call it blocking.
The shell did also use that because fgetc() ignores signals and
wait() didn't. I think we should stick to letting fgetc() and
others ignore signals (stopping a stdio operation somewhere
in the middle because of a signal doesn't really work). So,
instead the shell uses read now and manages a small buffer
on its own.
Other uses of wait() and notify() might have been
synchronization, but semaphores are better for this case
because you can't loose an "event".
Additionally, I organized the syscalls in a way that we can
add/remove syscalls more easily.
Use a semaphore for reading from devices.

That is, the old set-readable concept is gone and we use a
semaphore that is up'ed by the driver via fcntl() and down'ed
by the kernel if a client wants to read something. This is
much easier to implement and arguably cleaner.
This is used by all character devices (atm only vterm). Other
devices always have data to read, so that this is not necessary.
To be able to implement that, I had to change the way references
of VFSNodes are counted as well. Now parent nodes have a
reference by all their childs. This allows us to assume that
our parent does always exist (although maybe not reachable
anymore), which simplifies things and especially doesn't require
us to grab a lock at some critical places.
eco32: fixed bug in handling a signal after syscall.