Opt replace hot calls to .nonEmpty with `ne Nil`.

Cleans up profile results, probably not more.
Optimize isMacroImplReference

This method is called for *every* adapt.

Usually, we're dealing with empty attachments,
add a fast past to `contains` for that.
Optimize Typers#transformed

This map contains trees that have already been type
checked during Namer. When the typer proper runs,
it uses the old cooking show trick: "here's one I created
earlier!".

Maintaining / querying this map was reporting as 5% of
compilation speed.

Rather than a giant hash map for the whole compiler,
keep one per compilation unit. Also switch to using a
Java IdentityHashMap for each of these.
Big speedup in namer to typer handoff of pre-typed trees

"We've got tree attachments, and we know how to use them!"

Well, we do now.