SI-7899 Allow by-name inference under -Yinfer-by-name

(Reworks #3034)

As usual, the hole has been exploited in the wild. While you can't abstract
over by-name-ness without running into the ClassCastException or an un-applied
Function0, there are cases like the enclosed test where you can tiptoe around
those cases.

I've proposed a small change to Scalaz to avoid tripping over this problem:

   https://github.com/scalaz/scalaz/pull/562/files

But this commit I've also added a transitional flag, -Yinfer-by-name, that
they could use to back-publish older versions without code changes. It is also
an insurance policy for other projects that might be exploiting the same hole.