SI-8143 Regressions with override checks, private members

These regressed in e609f1f20b, which excluded all private methods from
overriding checks. We should only exclude private[this] members on the
low end of a pair, as was done before that commit, and, we must also
exclude private members on the high side.

Why? Warning: reverse engineered intuition follows.

We need to report an error when if a private method in a subclass
has matches a less-private method in the super class and report an
error, lest the user be fooled into thinking it might be invoked
virtually. On the other hand, adding a private method to a super
class shouldn't invalidate the choice names of public members in
its superclasses.

I've removed the test case added by that commit and will lodge a
reworked version of it that Paul provided as a new issue. That shows
a bug with qualified private + inheritance.

In addition, the expectation of `neg/accesses.check` is reverted
to its 2.10.3 version, which I believe is correct. When it was
changed in e609f1f20b it sprouted a variation, `neg/accesses-2`,
which has now changed behaviour. The intent of that test will
be captured in the aforementioned issue covering qualified private
inheritance.
SI-6844 restrict splicing in parameter position

Previously were a bit too permissive on how splicing in function
parameter position worked. This made confusing things like
possible:

   val x = TermName(“x”)
   q”def foo($x)”

Now you can either splice trees in that position (ValDefs) or
you have to provide type if you splice a name.
SI-8076 improve support for implicit argument list

This adds support for construction and deconstruction
of implicit argument list which was originally suggested
by @cvogt.

1. Splicing vale into implicit argument list automatically
   adds implicit flag to them:

     val x = q"val x: Int"
     q"def foo(implicit $x)"
     // <=> q"def foo(implicit x: Int)"

2. One might extract implicit argument list separately from
   other argument lists:

     val q”def foo(...$argss)(implicit ..$impl)" =
       q"def foo(implicit x: Int)
     // argss is Nil, impl contains valdef for x

   But this doesn't require you to always extract it separatly:

     val q”def foo(...$argss)" =
       q"def foo(implicit x: Int)
     // argss contains valdef for x
SI-7445 ListMap.tail is returning wrong result

Reverted the commit that introduced the bug, and modified HashMap to no
longer assume that tail is O(1).

Review by @Ichoran, @soc
Add support for Java 8 in our build.

We explicitly check for supported Java versions in our build.
Add Java 8 to the list of supported versions.
Work-around for partest failure due to JDK bug.

JDK7 and JDK8 have a bug that causes JVM to print some warning about
applets that is unrelated to whatever we are testing in Scala. Let's
work it around using test/files/filters mechanism that allows us to filter
out output lines based on regexp.
Make abstract-report2 test less dependent on std library.

Replace the use of `Ordering` by custom, dummy trait Xyz defined in test's
source.

By not inheriting from Ordering in abstract-report2 we make the test
less dependent on both Scala and Java library. The reason we are less
dependent on Java is because Ordering extends Java's comparator.

This change is motivated by the fact that Java 8 introduced default
method `reversed` to Comparator interface and we get a failure due to
conflicting inheritance:

-abstract-report2.scala:9: error: trait Bippy inherits conflicting members:
-  method reversed in trait TraversableOnce of type => List[(T2, String)]  and
-  method reversed in trait Comparator of type ()java.util.Comparator[T3]
-(Note: this can be resolved by declaring an override in trait Bippy.)
-trait Bippy[T1, T2, T3] extends Collection[T1] with TraversableOnce[(T2, String)] with Ordering[T3]
-      ^
Tag synthetic unit with attachment

This makes it easy to differentiate unit inserted by a compiler vs unit
written by the user. Useful for quasiquotes and pretty printing.

Additionally SyntacticBlock extractor is changed to treat EmptyTree as
zero-element block.
Refactor reification of high-cardinality holes

New approach makes iterated function much more clear through aggressive
code reuse, recursion and large descriptive comment on top of it.
SI-7275 allow flattening of blocks with ..$

This commit extends current splicing rules to allow flattening of
trees into other trees.

Without such support it is impossible to correctly create vals with
patterns and use it in other location as they could expand into
multiple-statement blocks:

    scala> q"val (a, b) = (1, 2)"
    res0: reflect.runtime.universe.Tree =
    {
      <synthetic> <artifact> private[this] val x$1 = scala.Tuple2(1, 2):
    @scala.unchecked match {
        case scala.Tuple2((a @ _), (b @ _)) => scala.Tuple2(a, b)
      };
      val a = x$1._1;
      val b = x$1._2;
      ()
    }

    scala> q"..$res0; println(a + b)"
    res1: reflect.runtime.universe.Tree =
    {
      <synthetic> <artifact> private[this] val x$1 = scala.Tuple2(1, 2):
    @scala.unchecked match {
        case scala.Tuple2((a @ _), (b @ _)) => scala.Tuple2(a, b)
      };
      val a = x$1._1;
      val b = x$1._2;
      println(a.$plus(b))
    }
Address pull request feedback
Versions of modules part of Scala 2.11.0-M8.
Reify all blocks as syntactic blocks

Previous version of the pattern wasn't precise enough due to the
fact that synthetic units are now erased by syntactic block and
this could cause incorrect reification for cases like:

   val x = { val y = 1 }

Here syntactic block would extract one element but we still need to
reify it through syntactic block endpoint. So we can't filter based
on the number of elements extracted but rather filter on type of a
tree.
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.
Merge pull request #3404 from gkossakowski/java8-support

Preliminary support for building and testing with Java 8
SI-8171 make tq"" an alias for empty type tree
Merge pull request #3388 from rklaehn/issue/7445

 ListMap.tail is returning wrong result
Merge pull request #3390 from adriaanm/release-2.11.0-M8

Versions of modules part of Scala 2.11.0-M8.
SI-7919 Newline after empty string interp

Consume the newline non-raw for safe handling after
single-line interpolation.
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