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. Tree#symbol is a megamorphic call,
which featured in profiles.
Typers#stabilize is a noop in erasure's typer.

Anything we can do to make erasure faster.
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.
Don't try to eliminate tail calls in constructors.
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.
Optimization in TailCalls

Only store the position and reason for a failure to tailcall
transform a method if we ever need to report it, ie, if the
method was annotated with @tailrec.

Saves object hashing and map updates, profiling suggests
that this reduces the tailcalls phase from about 2% of compilation
time to about 1%.

Also, clear the maps eagerly after each compilation unit,
rather than letting them accumulate entries for the entire
run. Working with smaller maps can't hurt.
SI-7266 Stream leaks memory

Changed tail-generation function to mutable and clear it after it's used to allow any captured memory to be freed once the tail has been generated.

(This is a case where a by-name parameter was used when a lazy val parameter was wanted instead.  If we ever get lazy val parameters, we should switch to that.)
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.

Use `hasAttachment` rather than `getAttachment.exists`
Optimize use of methodTypeSchema

Cache it, rather than recreating it for each candidate overriden
method we encounter.

We can't do this eagerly as we trip a cycle in neg/t5093.scala.
Merge pull request #3450 from Ichoran/issue/7266

SI-7266 Stream leaks memory
Merge pull request #3445 from retronym/topic/opt7

Grab bag of compiler optimizations
Merge pull request #3448 from retronym/topic/opt10

Optimizations in tail calls
SI-4014 Scaladoc omits @author