[backport] SI-7470 implements fundep materialization

Backports 21a8c6c from the 2.11.x branch under -Xfundep-materialization
as per Miles Sabin's request. Thanks Miles!
pull request feedback
SI-8803 generate super accessor for super[A], if A is outer superclass

    class C extends A with T {
      class I {
        C.super[T]
        C.super[A]
      }
    }

A super call in a nested class of the form super[T] where T is a
parent trait of the outer class doesn't need an accessor: mixin can
directly re-route the call to the correct implementation class - it's
statically known to be T$class.

However, if a nested class accesses super[A] and A is the superclass
of the outer class (not a trait), then we need a super accessor in the
outer class.

We need to add the mixin name to the super accessor name, otherwise
it clashes with non-qualified super accessors.
SI-8498 @compileTimeOnly should be aware of bridge methods.

Calling a @compileTimeOnly method from another @compileTimeOnly
method happens when the former gets a bridge method. It should not
throw an error. Calling the bridge or the method will anyway.
SI-8474  Inconsistent behavior of patch method

Changed Iterator to be consistent with other collections.

Also fixed SeqViewLike to validate/constrain inputs.

No specific tests; quasi-comprehensive collection tests will cover this later.
SI-5254 running an empty scala script should succeed

The script runner made the assumption that "compilation succeeded"
implies "there is a Main class to run", but this can be wrong if the
script is empty (or only contains imports/comments).

The ScriptRunner now uses the ClassPath utility to check if there really
is a main class. If not, it doesn't try to run it and returns
peacefully. This also makes `scala -e ''` succeed.
SI-8410 Don't warn fatally on disabled flag

Since boolean settings can now be set false by user,
summary warnings should not be issued when the flag
is explicitly off (as opposed to unset, default).

In particular, `-Xfatal-warnings` should not fail
if there were no warnings otherwise.

```
$ ~/scala-2.11.2/bin/scalac -d /tmp -deprecation:false test/files/pos/t8410.scala
$ ~/scala-2.11.2/bin/scalac -d /tmp -deprecation:false -Xfatal-warnings test/files/pos/t8410.scala
warning: there were three deprecation warnings; re-run with -deprecation for details
error: No warnings can be incurred under -Xfatal-warnings.
one warning found
one error found

```
After this commit:
```
$ skalac -d /tmp -Xfatal-warnings test/files/pos/t8410.scala
warning: there were three deprecation warnings; re-run with -deprecation for details
error: No warnings can be incurred under -Xfatal-warnings.
one warning found
one error found
$ skalac -d /tmp -deprecation:false -Xfatal-warnings test/files/pos/t8410.scala
```
Similarly for other collecting flags:
```
$ skalac -d /tmp -optimise -Yinline-warnings -deprecation:false -Xfatal-warnings test/files/pos/t8410.scala
test/files/pos/t8410.scala:14: warning: Could not inline required method dropWhile because access level required by callee not matched by caller.
  def k = List(0).dropWhile(_ < 1)   // inlining warns doubly
                           ^
test/files/pos/t8410.scala:14: warning: At the end of the day, could not inline @inline-marked method dropWhile
  def k = List(0).dropWhile(_ < 1)   // inlining warns doubly
                           ^
error: No warnings can be incurred under -Xfatal-warnings.
two warnings found
one error found
$ skalac -d /tmp -optimise -Yinline-warnings:false -deprecation:false -Xfatal-warnings test/files/pos/t8410.scala

```
Footnote: handling of deprecated locals also changed in 2014:
```
$ ~/scala-2.11.0-M7/bin/scalac -d /tmp -deprecation -Xfatal-warnings test/files/pos/t8410.scala
test/files/pos/t8410.scala:8: warning: method f in object Test is deprecated:
  Console println f  // warns
                  ^
error: No warnings can be incurred under -Xfatal-warnings.
one warning found
one error found
$ ~/scala-2.11.0-M8/bin/scalac -d /tmp -deprecation -Xfatal-warnings test/files/pos/t8410.scala
test/files/pos/t8410.scala:5: warning: method _f is deprecated:
  def g = { @deprecated("","") def _f = f ; _f }                   // warns in 2.11.0-M8
                                            ^
test/files/pos/t8410.scala:6: warning: class X is deprecated:
  def x = { @deprecated("","") class X { def x = f } ; new X().x } // warns in 2.11.0-M8
                                                           ^
test/files/pos/t8410.scala:8: warning: method f in object Test is deprecated:
  Console println f  // warns
                  ^
error: No warnings can be incurred under -Xfatal-warnings.
three warnings found
one error found

```
SI-8410 Summarize if warnings and not disabled

Simplify the conditional and emit the summary if
there were buffered warnings and the user didn't
explicitly disable this setting.

The working assumption is that using fatal-warnings
to turn on summaries was either an outdated heuristic
or just due to a faulty merge. Or wait, was it for
-feature, which is not enabled when warnings are
issued against it?
Fix assertThrows, and the behaviors that it shadowed

The test in StdNamesTest was introduced in cff8b569, where newTermName
would throw on a negative length. In b090f97 this was changed to fix
the negative length, but the test was not adapted (as it didn't fail).
-Ystatistics accepts a list of phases, cleanups in MultiChoiceSetting

MultiChoiceSetting and Xlint with its deprecated aliases is now a bit
simpler, but there's still room for improvement, as noted in comments.
SI-8810 scaladoc: fixed code block indentation normalization
Merge pull request #3958 from lrytz/merge/2.10-to-2.11-sept-2

Merge 2.10 to 2.11
Merge pull request #3955 from som-snytt/issue/8410

SI-8410 Don't warn fatally on disabled flag
SI-8113 allow a newline between a link target and title

Parsing "[[http://foo.bar link title]]" stops at the first whitespace.
This breaks pretty badly in:

[[http://foo.bar
link title]]

It stops after "link", interprets what it parsed as a link to a member,
obviously fails, and then just ouputs "title".
It should at least return a proper error, or, even better, just allow a
newline between the target and title. I went for the latter.
Merge pull request #3960 from gourlaysama/wip/t8113

SI-8113 scaladoc: allow a newline between a link target and title
Merge pull request #3951 from pawel-wiejacha/2.11.x_SI-8810_fix

scaladoc: fixed code block indentation normalization
Merge pull request #3932 from gourlaysama/wip/t8498

SI-8498 @compileTimeOnly should be aware of bridge methods.
SI-8786 disable part of test that's failing the jdk8 build
Merge pull request #3961 from lrytz/t8786-disable-test

SI-8786 disable part of thest that's failing the jdk8 build
Merge pull request #3935 from lrytz/t8803

SI-8803 generate super accessor for super[A], if A is outer superclass