make rt_init/rt_term callable from C

- deprecate the ExceptionHandler in Runtime.initialize/terminate

- declare/document rt_init/rt_term in core.runtime
keep track about how often rt_init/rt_term were called

- This is necessary because a C program might
  initialize multiple D libraries, of which
  each has to call rt_init/rt_term in their own
  init/term functions.
make runtime initialization/finalization explicit

- fix Issue 11378 - implicit runtime initialization/finalization
  is broken

- C programs need to call rt_init in order
  to initialize the runtime and all shared
  libraries.

- After rt_init was called shared libraries are
  initialized on loading and finalized on unloading.

- C programs need to call rt_term in order
  to finalize the runtime and all shared
  libraries.
fix Issue 11309 - std.concurrency: OwnerTerminated message doesn't work

- add regression test
- Revert "fix Issue 10976 - thread_joinAll after main exit performed too late"

This reverts commit 7d82a57c82f9a5359468680f36aa1026243e6f9e.

Conflicts:
	src/core/runtime.d
	src/rt/dmain2.d
fix Issue 11149 - Runtime.args no longer available in static constructor

- This got fixed by reverting the order of initialization.
- Add unittest
Merge pull request #649 from dawgfoto/fix11378

fix Issue 11378 - implicit runtime initialization/finalization is broken