Replace `//printf` with `debug(cast_) printf` in `rt.cast_`.
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
Refactor `rt.cast_`.
Fix `_d_interface_cast` and `_d_dynamic_cast` function signatures.

Both may return either Object or an interface.
remove unreferenced code
remove no longer called functions
Merge pull request #419 from WalterBright/fixtrace

remove unreferenced code
Merge pull request #420 from WalterBright/fixllmath

remove no longer called functions
Merge pull request #417 from denis-sh/rt.cast_-small-improvements

`rt.cast_`  small improvements
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