Implicit search optimizations

I'm trying to submit a few of the (hopefully) uncontroversial
patches from my attempts to optimize the compiler. This pull
request focusses on implicit search.

 - avoid repeated member lookup and creation of sets of symbols by
   introducing a per-run analog of Definitions. There is more
   work to be done in the name of correctness there under the
   banner of .
 - implicit class symbols were never meant to be in an ImplicitInfo,
   only the factory method should be in there.
 - cache 'isErroneousOrCyclic' in ImplicitInfo (which itself is
   cached per-run in Contexts (for in-scope implicits) and in
   Implicits (for companion object implicits.)

Review by @gkossakowski @adriaanm. /cc @xeno-by