low-level implementation of dynamic loading

- implement rt_loadLibrary/rt_unloadLibrary in src/rt/sections_linux.d
- keep hashmap from link_map* to DSO* structs to gather library
  dependencies and perform thread initialization
- thread local reference count to trigger TLS ctors/dtors
- add core.thread interface to inherit loaded libraries when spawning
  a new Thread
- make dynamic loading functions only available for version (Shared)
- set -version=Shared when building a shared druntime
- loading a shared library when statically linking against druntime
  will cause a link error
- Runtime.loadLibrary and Runtime.unloadLibrary are templated so that
  they are only linked when actually used
- the static libphobos2.a does not depends on libdl
add unittests for shared libraries

- test EH, GC, init/fini and ModuleInfos for linked and loaded D libraries
add C tests

-  linkD - links a D library
-  loadD - links druntime, loads a D library
- loadDR - loads druntime, loads a D library
add tests with dependent libraries