merge 2.10.x to master

... and a bonus commit: improve to the way partest-extras is built.

Only one conflict, which was in `ExtensionMethods` and was trivial to resolve.

```
% git log --graph --oneline `git merge-base master origin/2.10.x`...origin/2.10.x
*   1015d12 Merge pull request #2916 from retronym/ticket/7818
|\
| * cb028ba SI-7818 Cast our way out of extended existential angst
*   7ecffb0 Merge pull request #2922 from huitseeker/issue/7767
|\
| *   aa1bff8 Merge pull request #1 from retronym/ticket/7767-test
| |\
| | * 2391887 SI-7767 Test case for Scaladoc on early initializers
| |/
| * 48283ca SI-7767 avoid rejecting Scaladoc comments in early initializers
* |   6c431e6 Merge pull request #2866 from retronym/ticket/7269
|\ \
| * | fe9a3e9 SI-7269 Rework MapLike#retains to account for desugaring change
|  /
* |   d1cff20 Merge pull request #2911 from retronym/ticket/7814
|\ \
| |/
|/|
| * a19babc SI-7814 Updates the instrumented version of ScalaRuntime.
| * fb43ec8 SI-7814 Avoid init cycle between Predef, `package`, ScalaRuntime
* 7fa0e60 Merge pull request #2895 from som-snytt/issue/7652-tools-jar-backport
* 7804cec [nomaster] SI-7652 REPL extended quest for tools
* 8b10daf [nomaster] SI-7652 Bad tools fails loudly

% /code/scala git merge -s ours 7fa0e60 --edit
Merge made by the 'ours' strategy.

% git merge origin/2.10.x
```

Review by @gkossakowski