SI-7470 implements fundep materialization

This fix provides implicit macros with an ability to affect type inference
in a more or less sane manner. That's crucial for materialization of
multi-parametric type class instances (e.g. Iso's from shapeless).

Details of the technique can be found in comments. Also see the discussion
at https://github.com/scala/scala/pull/2499.