term and type reftrees are now reified uniformly

Top-level (i.e. owned by a package) => Ident(symbol)
Nested (i.e. owned by an object or a package object) => Select(owner, symbol)
Inner (i.e. owned by a static class) => selectTerm/selectType(owner, name)
Non-locatable (i.e. everything else) => see GenTrees.scala for more details

Changes w.r.t the previous approaches:
  * Top-level refs are no longer reified as Select(This(package), symbol).
    Proposed reification scheme is as resistant to resetAttrs as previous one,
    but is at the same time much shorter.
  * Refs to definitions from package objects are no longer Ident(symbol).
    Otherwise reflective compilation of things like `_ :: _` fails.
  * Contents of Predef._ and scala._ are no longer treated specially.
    This increases the size of reificode, but is more hygienic.
accommodates pull request feedback

https://github.com/scala/scala/pull/2072