SI-8200 provide an identity liftable for trees

This liftable hasn't been originally included in the set of standard
liftables due to following contradiction:

1. On one hand we can have identity lifting that seems to be quite
   consistent with regular unquoting:

    q"..${List(1,2)}"        <==> q"1; 2"
    q"${List(1,2)}"          <==> q"s.c.i.List(1, 2)"
    q"..${List(q"a", q"b")}” <==> q"a; b"
    q"${List(q"a", q"b")}"   <==> q"s.c.i.List(a, b)"

   This is also consistent with how lisp unquoting works although they
   get lifting for free thanks to homoiconicity:

    // scala
    scala> val x = List(q"a", q"b); q"f($x)"
    q"f(s.c.i.List(a, b))"

    // scheme
    > (let [(x (list a b))] `(f ,x))
    '(f (list a b))

2. On the other hand lifting is an operation that converts a value into
   a code that when evaluated turns into the same value. In this sense
   Liftable[Tree] means reification of a tree into a tree that
   represents it, i.e.:

    q"${List(q"a", q"b")}"
    <==>
    q"""s.c.i.List(Ident(TermName("a")), Ident(TermName("b")))"""

   But I belive that such lifting will be very confusing for everyone
   other than a few very advanced users.

This commit introduces the first option as a default Liftable for trees.
Merge pull request #3653 from densh/si/8200

SI-8200 provide an identity liftable for trees
introduces Mirror.typeOf

I just realized that our tag-based shortcuts were incomplete, because
they only work with root mirrors (doing just u.typeTag[T].tpe means that
the type is going to be resolved in u.rootMirror because that's the default).

This commit fixes this oversight. I'm hoping for 2.11.0-RC3, but also feel
free to reschedule to 2.12.0-M1 if it becomes clear that RC3 isn't happening.