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