SI-8126 adds a -source option to let (parts of) the compiler run on older code

This adds a `-source` flag and puts various 2.10 source-level
compatibility-breaking fixes under it (so that the fixed codepath
doesn't run with -source:2.10). 

The last commit adds another (early) setting (`-Yrelax-variance-checks`)
for the specific checks brought by SI-6566, fixed in a419799f87. This
is needed to bypass the stricter (and correct) variance checks done in
`reflect/internal/Variances`. `-Y-relax-variance-checks`, contrarily to
`-source`, doesn't depend on the `nsc.settings.ScalaVersion` class. This
option is turned on by `-source:2.10`

This has been tested by compiling the 2.10 scala library (using the
compiler in this PR , with "`-source:2.10 -Ystop-after:typer`") using
this project: https://github.com/huitseeker/scala-library

review by @dragos or @retronym.