Reify lists as a :: b :: Nil rather than List(a, b)

For sake of performance. :: is just a constructor and has lower
overhead.
SI-8173 add support for patterns like init :+ last to quasiquotes

Adds support for patterns like:

  val q"{ ..$init; $last }" = q"{ a; b; c }"
  // init == List(q"a", q"b")
  // last == q"c"

Which under the hood get compiled as `:+` patterns:

  SyntacticBlock(init :+ last)