SI-8608 f interpolator emits constant strings

When invoking `format` is obviated by a lack of
formatting fields, then just degenerate to an
unenhanced constant string.

This means it doesn't cost anything to use
f"$$ordinary" in place of "$ordinary", which
may cause warnings under -Xlint.

Note that certain format literals, in particular
for line separator %n, are not actually literals and
can't be replaced at compile time.
SI-8608 f-interpolator inlines StringOps

Instead of "hi".format(), emit new _root_.s.c.i.StringOps("hi").format(),
to clarify intent and avoid picking up some other implicit enhancement.

A further optimization would be to use String.format directly when
that is possible.  The ticket says it is not possible for
```
f"${BigDecimal(3.4)}%e"
```
Merge pull request #3878 from som-snytt/issue/8608

SI-8608 f interpolator emits constant strings
Fix -Yno-adapted-args, it would just warn, not err
Merge pull request #3872 from lrytz/no-adapted-args

Fix -Yno-adapted-args, it would just warn, not err
SI-5919 TypeTags and Exprs should be serializable

- Make TypeCreator and TreeCreator extend Serializable.
- When replacing a SerializedTypeTag with a TypeTag or WeakTypeTag,
  do not use scala.reflect.runtime.universe.rootMirror, since
  it is unlikely to find user classes; instead, create a runtime
  mirror using the context ClassLoader of the current thread.
  Use the same logic for SerializedExpr.
- Remove writeObject/readObject methods from SerializedTypeTag
  and SerializedExpr since they are unused.
- Add @throws annotation on writeReplace and readResolve methods.
- Handle SecurityException if the current thread cannot access the
  context ClassLoader.
- To make type tags of primitive value classes serializable, make
  PredefTypeCreator a top-level class. Otherwise, it would
  retain a reference to the enclosing Universe,
  rendering the TypeCreator non-serializable.

Binary compatibility:

- Keep nested PredefTypeCreator class to avoid backward binary
  incompatible change.
- Keep `var` modifiers on the class parameters of
  SerializedTypeTag for backward binary compatibility.
- Adds filter rules to forward binary compatibility whitelist:
  - `TypeCreator`, `PredefTypeCreator`, and `TreeCreator` must now
    extend from `Serializable`.
  - Must have new class `scala.reflect.api.PredefTypeCreator`
    to avoid problematic outer reference.
Add SerialVersionUID to SerializedTypeTag and SerializedExpr

The reason for adding the SerialVersionUID annotations is to
be able to provide serialization stability throughout the 2.11.x
series. And since type tags (and exprs) have not been serializable
before, this does not break serialization for existing code.