Avoid generic collections operations hot paths

 - Use a specialized version of List#{map, collectFirst}
 - Avoid nonEmpty in favor of `ne Nil`

I see in the order of 2% speedup. Perhaps more useful is that
these methods no longer dominate the YourKit profiles, even though
that was probably due in a large part to profiler bias due to
safepoints.
Optimize isSelfSuperCall

Avoid the Applied extractor altogether, as that eagerly
creates `argss` which we don't need and which is quite
expensive.
Optimize TreeInfo#isMacroApplication.

It's called rather frequently.
Typers#stabilize is a noop in erasure's typer.
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 use of methodTypeSchema

Call it once outside of the loop.
Optimization in InstantiateDependentMap

Avoid creating a throwaway array in existentialsNeeded.
Implicits: Move shadowing checks after plausibility checks

Shadowing is rarer than implausbility; this seems to be
the most efficient way to order these filters.
More overrides for SetN
Optimize lookup of tree/symbol attachment search.
Optimize handoff namer -> typer tree handoff
Optimization in Uncurry

Only perform HashMap lookup of a tree until after checking more
cheaply if it refers to a symbol with by-name parameter type.
Avoid needless Name creation

 - Don't create names just to perform prefix/suffix checks
 - Don't create names, decode, *and* intern strings in ICode
Optimize implicit search

Avoid a full findMember in isImpossibleSubtype.
Instead, just see if any of of the base classes
has a non private decl with the given name.
Optimize tailcall elimination

From the "if a tree falls" department: don't bother create a finely
distinguished error messages about why the transform is inapplicable
if the current context doesn't demand it.
Don't try to eliminate tail calls in constructors.
Optimize the pickler phase

 - move "erroneous type" diagnostic into a crash recovery handler,
    rather than running it proactively
 - move the "unexpanded macros" check into refchecks.

 Cuts this phase in half, from about 1% of compile time to 0.5%.
Inlinability for Context#withMode

Finalize it explicitly, and make it effectively final as a backstop
by sealing Context.
Fix @inlinability of devWarning

It wasn't inlinable because it called a protected method, `isDeveloper`.
Disable overhead of dead code warnings outside of -Ywarn-dead-code