This ensures that typechecking custom unapplications in silent mode
doesn't leak uncatchable errors. Interestingly enough, the problem
only manifested itself for custom unapply methods, not for synthetic
ones generated for case classes.
SI-8844 Fix regression with existentials + type aliases

Regressed in 2a1b15e / SI-8283. Another specimen of an archetypal
bug: unwanted dealising by using `typeSymbol`, rather than
`typeSymbolDirect`.
spec: use the yaml title as the HTML title
Merge pull request #3980 from retronym/ticket/8844

SI-8844 Fix regression with existentials + type aliases
spec: add syntax highlighting for scala code with highlight.js

This adds syntax highlighting for all code scala blocks. Highlighting is
done after MathJax is done rendering so that latex can be used in code
blocks (and it currently *is* used).

Sadly Scala isn't common enough to be bundled in the highlight.min.js
available from CDNs, so we commit a local version of version 8.2 with
only scala bundled in it. The only other language used (ebnf) isn't
supported by highlight.js.
spec: fix latex formatting all over the place

Two things worth mentioning:

 - `\em` and `emph` are not supported by MathJax,
 - and things like `\mathcal{C}_0` require escaping the `_`,
   otherwise markdown sees it as the beginning of  `_some string_`.
   It doesn't happen without the closing bracket in front, e.g. in `b_0`.
spec: remove trailing whitespace everywhere
spec: fix broken links and anchors, including examples

For examples, the "name" of the example (like "Example Ordered") is only
used to derived its html id so that one can link to it (see
`layouts/default.yml`). Ideally all examples should have a name; here I
only added enough to satisfy existing links.
SI-8459 fix incorrect positions for incomplete selection trees

The mentioned issue is a presentation compiler issue, but its root cause is a bug in the parser which incorrectly assigned positions to incomplete selection trees (i.e. selections that lack an indentifier after dot and have some whitespace instead).

In detail: for such incomplete selection trees, the "point" of the position should be immediately after the dot but instead was at the start of next token after the dot. For range positions, this caused a pathological situation where the "point" was greater than the "end" of the position. This position is later used by the typechecker during resolution of dynamic calls and causes it to crash. Of course, because a syntactically incorrect code is required for the bug to manifest, it only happens in the presentation compiler.
SI-8852 Support joint compilation of Java interfaces w. statics

We had to change the java parser to accomodate this language
change in Java 8.

The enclosed test does not require JDK8 to run, it only tests
JavaParsers.

Here is a transcript of my manual testing using Java 8.

```
% tail test/files/run/8852b/{Interface.java,client.scala}
==> test/files/run/8852b/Interface.java <==
public interface Interface {
  public static int staticMethod() {
  	return 42;
  }
}

==> test/files/run/8852b/client.scala <==
object Test extends App {
  assert(Interface.staticMethod() == 42)
}

// Under separate compilation, statics in interfaces were already working
% rm /tmp/*.class 2> /dev/null; javac -d /tmp test/files/run/8852b/Interface.java && scalac-hash v2.11.2 -classpath /tmp -d /tmp test/files/run/8852b/client.scala && scala-hash v2.11.2 -classpath /tmp -nc Test

// Under joint compilation, statics in interfaces now work.
% rm /tmp/*.class 2> /dev/null; qscalac -d /tmp test/files/run/8852b/{client.scala,Interface.java} && javac -d /tmp test/files/run/8852b/Interface.java && qscala -classpath /tmp -nc Test
```
Merge pull request #3974 from xeno-by/topic/buffer-pattern-expander-errors

This ensures that typechecking custom unapplications in silent mode
Merge pull request #3989 from retronym/ticket/8852

SI-8852 Support joint compilation of Java interfaces w. statics
Merge pull request #3988 from ghik/issue/8459

SI-8459 fix incorrect positions for incomplete selection trees
Merge pull request #3984 from gourlaysama/wip/spec

General formatting improvements in the spec
Particular formatting improvement in the spec

Fixes the titularity of the "Overloading resolution" header
under 6.26.1 "Value conversions" to match "Type instantiation."

Hopefully this makes the link to the actual 6.26.3 overloading
resolution section work without further renaming. (Edit: changed
the minor heading to say "Static overload resolution", which is
sufficiently redundant.)

Possibly that is the oftenest-cited section of the entire document.

At least on Stack Overflow, if not in Proceedings of the ACM.
Merge pull request #3990 from som-snytt/issue/spec-overload-title

Particular formatting improvement in the spec
Make compiler.properties fall back to prefixed

Previously, if we wanted to override the shell.prompt property, we had
to modify compiler.properties in the jar. This change lets us do the
following, instead:

    scala -Dscala.shell.prompt="$(echo -e "\npuffnfresh> ")"

All properties previously loaded from compiler.properties now fall back
to "scala." in the system properties when not found.
HasSet to HashSet typo fix
Merge pull request #3997 from krystiannowak/patch-1

HasSet to HashSet typo fix
[backport] SI-7756 Uncripple refchecks in case bodies

In 65340ed4ad2e, parts of RefChecks were disabled when
we traversed into the results of the new pattern matcher.
Similar logic existed for the old pattern matcher, but in
that case the Match / CaseDef nodes still existed in the tree.

The new approach was too broad: important checks no longer
scrutinized the body of cases.

This commit turns the checks back on when it finds the remnants
of a case body, which appears as an application to a label def.

Conflicts:
	src/compiler/scala/tools/nsc/typechecker/RefChecks.scala

Cherry pick of 3df1d77fc984b976efa68098206e801cf3b83a9e