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/5220c1fe040a859cfcbb53d89bcc161e73fde806).

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.