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.
These classes themselves are obviously not missing. The whitelist talks only about forward bincompat; compiling a class `A` against a class, say, `TreeCreator` that in version x+1 has a new superclass with additional members can cause a linkage error when `A` is used with version x of `TreeCreator`. Therefore, forward bincompat is an issue in this case. Now, in our case the new superinterface `Serializable` does not add new members, and thus no such forward bincompat issue can arise. Therefore, the reported problems are due to the fact that MIMA is not precise in this case.