druntime implementation for the new ELF registration

 - Store thread local list of self-registering
   libraries. The compiler provides ModuleInfos
   and EH tables.

 - Use dl_iterate_phdr to get further information
   from the runtime linker.

 - Iterate over program headers
   to find writeable segments, i.e. the one with
   GC roots. The program header also provides
   TLS module indices and the TLS segment size.
rebase and use core.sys.linux.{elf,link} headers
reference _d_dso_registry in rt_init...

...to support weak linkage of compiler when using a multilib archive.
Weak linking allows to incrementally introduce _d_dso_registry in the
compiler and the runtime.
register static GC roots

 - they will contain all writeable PT_LOAD segments
support for scanning TLS roots

 - Create a small TLS helper in rt.dso of which
   each thread object contains one instance.
   Update TLS ranges in the GC signal handler
   because the TLS ranges might change while
   the thread is running.

Some room for optimization:
  - Using TLS architecture dependent knowledge we might
    preserve the lazy allocation of TLS blocks.
use EH tables from shared libraries

- iterate over all shared libraries during function lookup
use ModuleInfos from shared libraries
check for module hijacking

 - This is needed to guarantee correct initialization
   of modules and identify library dependencies.

 - Abort the program with a detailed error message.
   Symbol collision bugs are hard to find so it's better
   to error out early.
add SHARED option to posix.mak

- if set builds a shared libdruntime.so
unit tests for shared libraries

- Use a modified unit test handler which allows to selectively
  run unit tests. This is necessary because a shared library contains
  the code for all compiled modules, thus the default unit tester
  would run everything at once.
add shared library tests
add more tests for gc scanning and thread init