SI-8478 Fix a performance regression in subtyping

When checking `M[X] <:< M[Y]` for an `M` with an invariant
parameter, we have to check that `X <:< Y && Y <:< X`. This is
done in `isSubArgs`.

The compile time of that program in the ticket jumps from 20s in
2.10.4 to too-long-to-measure in 2.11.0. This commit reverts the
a subtle change to `isSubArgs` in ea93654 that was ultimately
responsible.

The search for this was unusually circuitious, even for scalac.
It appeared in 9c09c1709 due a tiny error that has since been
reverted in 58bfa19. But 58bfa19 still exhibited abysmal performance,
due to an intervening regression that I'm targeting here.

I haven't managed to extract a performance test from Slick. Using
the test that @cvogt provided, however, with this patch:

	% time qbin/scalac -J-Xmx4G -classpath /Users/jason/code/slick-presentation/target/scala-2.10/classes:/Users/jason/.sbt/0.13/staging/b64b71d1228cdfe7b6d8/slick/target/scala-2.10/classes:/Users/jason/.ivy2/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.6.4.jar /Users/jason/code/slick-presentation/src/main/scala/SlickPresentation.scala

	real	0m21.853s
	user	0m33.625s
	sys	0m0.878s

Which is back to 2.10.x style performance.
Merge pull request #3694 from retronym/ticket/8478-2

SI-8478 Fix a performance regression in subtyping
WIP: trying to apply the Literal-based singleton types commit by @paulp to the master.
Fix non-working things.
Update check file.
Problems with null.
Update the check file.
This is needed for the tests to pass.
Added a macro to materialize an inhabitant for the singleton type.
Added a test with the Ranged class mentioned by @non.
Add inhabitant to the bincompat whitelist.
Marked potentiall places in code where constant type folding and singleton type inlining might occur.
Inlining functions with singleton result type.
More involved example with Ranged.
Needed for the tests to pass after adding the SingleInhabitant
Checking for declared singleton type. Tests seem to pass, but the issue is still there.
Forward bincompat.
Another problem.
Check that parser allows unicode identifiers in the type position.
Another one