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
Merge pull request #3410 from densh/si/8171

SI-8171 make tq"" an alias for empty type tree