SI-7584 Fix typer regression with by-name parameter types

It regressed in fada1ef6b#L4L614. Partially reverting just
this change restores the correct behaviour:

```
-        if (sym.isStable && pre.isStable && !isByNameParamType(tree.tpe) &&
+        if (treeInfo.admitsTypeSelection(tree) &&
```

This patch embeds the check for by-name parameter types into
`TreeInfo.isStableIdentifier`. That code already checks for
`Symbol#isStable`, which exludes direct references to by-name
parameters. But the additional check is required to deal with
by-name parameters in function types, e.g `(=> Int) => Any`.

Open question: should we go further and embed this check in `isStable`?

Currently:

    final def isStable        = isTerm && !isMutable && !(hasFlag(BYNAMEPARAM)) && (!isMethod || hasStableFlag)

Such function types are an underspecified corner of the language,
albeit one that is pretty useful writing, for example, in the
signature of a lazy foldRight that can operate over infinite
structures:

    def foldRight[A, B](fa: F[A], z: => B)(f: (A, => B) => B): B

The next commit subjects them to a little testing.
SI-7584 Test and spurious warning fix for by-name closures

The enclosed test case exercises by-name closures, which were
the subject of the previous commit. In the process, a spurious
warning was eliminated.
Merge pull request #2659 from retronym/ticket/7584

SI-7584 Fix typer regression with by-name parameter types