SI-7656 Simpler named args translation for pure args

 - Introduces `TreeInfo.isPure`, sharing code with the
   existing `isExprSafeToInline`.
 - Make both of these aware of by-name closures (Fixes SI-7664)
 - Permute named arguments in place to match the definition-site
   order if they are all pure, avoiding the needless ValDefs in
   the named/defaults Block which are troublesome for annotations
   such as:

      @deprecated(since = "", message = "")

Conflicts:
	src/reflect/scala/reflect/internal/TreeInfo.scala