Cherry-picking commits from master to 2.066 branch

Most of commits cherry-picked from [current master branch](https://github.com/D-Programming-Language/dmd/commit/10f3bf1bf81279511a3f41faaa34deb6c62ae42f).

I excepted following changes:
 - https://github.com/D-Programming-Language/dmd/commit/b7b303b6e4b2871556194654727beee45b74902e
   This is paired with corresponding druntime change, so it does not necessary for 2.066 release.