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]
-      ^
Add cross suffix customizability for modules

For each module whose version can be specified using
the property "xxx.version.number", it is now possible
to specify its cross version suffix by using an
optional property "xxx.cross.suffix".

If such a property is not defined, then continue to
use the string "_${scala.binary.version}", as before.
fix to partest.cross
Versions of modules part of Scala 2.11.0-M8.
Merge pull request #3394 from cunei/wip-cross-suffix

Add cross suffix customizability for modules
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
Merge pull request #3410 from densh/si/8171

SI-8171 make tq"" an alias for empty type tree
Merge pull request #3412 from retronym/ticket/2066-2.10-compat

 -Xsource:2.10: lenient treatment of variance in <:<, =:=
Merge pull request #3411 from som-snytt/issue/7919-si-nl

 Newline after empty string interp
Fix misuse of underscores.

It's a language bug, but M[_] <: Foo[_] does not mean what
anyone who writes it believes that it means. You have to give
the type parameter a name, like M[X] <: Foo[X].
corrects an error in reify’s documentation