Don't use runtime reflection from the batch compiler.

Not only does this save a big chunk of time on startup by avoiding
classloading and symbol table population, but it also seems to
improve steady state performance of the compiler.

Theory: JIT can optimize more aggressively without the
SynchronizedXxx decorators and the like being in the classloader.
See "Class Heirarchy Analyis" in [1]

This commit does this by:

  - Avoiding use of FromString in pattern matcher, instead
    using an established mechanism to parse system properties.
  - Changes FromString back to use OptManifest. AFAICT, this
    is now only a dependency of scala.tools.cmd.gen.Codegen,
    so this is just a defensive measure.

The REPL still uses runtime reflection, so will pay a little
performance tax.

Benchmark:

    avg shortest 10 times 744ms  # before
    avg shortest 10 times 675ms  # after

[1] https://wikis.oracle.com/display/HotSpotInternals/PerformanceTechniques
AsSeenFrom optimization: stop when we see a ThisType over a package object
Optimization in InstantiateDependentMap

Avoid creating a throwaway array in existentialsNeeded.
Optimize typedDefDef: disable some checks post typer

isPossibleRefinement reported as 1% of my profile, about half of that
was reported from the `EraserTyper`.

This commit restricts `checkMethodStructuralCompatible` to
the typer phase, and also moves in the feature warning for
implicits which was nearby.

I've also made a minor optimization to `overriddenSymbol` by
avoiding computing the method schema repeatedly.
Optimize copyTypeRef and <:< by comparing rawnames

TypeSymbol.name() reported about 1% in the profiler. Using
rawname instead seemed to offer a speedup in my benchmark
slightly higher than that.

I used this in the two hottest call sites, that together reported
72% of the calls to that method.

Theories:
  - ClassSymbol.name has to do more work than name (calling `needsFlatClasses`)
  - rawname is less megamorphic than name.