collect GC roots of DSO

- Use dl_iterate_phdr to find the program header table
  for the DSO

- Iterate over program headers and collect all
  segments that are allocated and writeable for
  the GC.
replace return with pop and unconditional jump

- CPU return stack is incorrect after a stack switch
  and thus branch prediction always fails for return
  instructions
add TLS range support

- store the TLS module id and it's size if the
  DSO has a PT_TLS segment

- add helper function that computes the actual
  memory range for the calling thread
Merge pull request #421 from dawgfoto/SharedRuntime_3

add TLS range support
Merge pull request #418 from dawgfoto/stackSwitchRet

replace return with pop and unconditional jump
-Fixes use of already freed memory in Gcx.Invariant
-Fixes of by one error in Gcx unittest
-Fixes printf spam when compiling druntime with -debug
Merge pull request #422 from Ingrater/pullUnittestFix

Fixes memory issues in Gcx unittests and printf spam