Use more precise return types for objects

This ensures that q"object O" is of type ModuleDef rather than
Tree and similarly q"package object O" is of type PackageDef.
SI-8171 make tq"" an alias for empty type tree
SI-2066 -Xsource:2.10: lenient treatment of variance in <:<, =:=

The soundness hole was exploited in Scalaz. They have fixed their
codebase correctly for Scalac 7.1.x, but have less freedom to
break source compatiblity in 7.0.x.

After this commit, they could choose to compile that branch with
-Xsource:2.10
Merge pull request #3410 from densh/si/8171

SI-8171 make tq"" an alias for empty type tree
Merge pull request #3412 from retronym/ticket/2066-2.10-compat

 -Xsource:2.10: lenient treatment of variance in <:<, =:=