[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.
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.
Add support for literal Byte and Short values.

This commit reserves the [zZ] and [sS] suffixes for Byte and
Short literals, respectively. These work exactly like Long
literals, which were already denoted with [lL].

For example, you can say:

  val zero = 0Z
  val bytes = List(23Z, 23Z, 0Z, 0Z, 111Z, -54Z, 19Z, 17Z)

This commit does not permit literal unsigned bytes, so 255Z and
0xffZ are not legal.

The choice of Z may seem strange, but B will not work for
hex constants (0x10B would be ambiguous) so Z seemed like a
good choice.
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 #12 from puffnfresh/feature/short-byte-literals

Add support for literal Byte and Short values.
Merge pull request #3935 from lrytz/t8803

SI-8803 generate super accessor for super[A], if A is outer superclass
SI-8806 Add lower bound check to Any lint

We already exclude the lint check for infer-any if
Any is somewhere explicit.

This commit adds lower bounds of type params to
the somewheres.

Motivated by:

```
scala> f"${42}"
<console>:8: warning: a type was inferred to be `Any`; this may indicate a programming error.
              f"${42}"
                  ^
res0: String = 42
```
Use Enumeration for MultiChoiceSetting

This is pretty easy, since a ValueSet is a BitSet.

When the setting is updated, recompute the current
set of values, which is cheap and succinct.

Checking a flag is also easy and fast.

Choices in MultiChoiceSettings may enable other choices.
Allow primes at the end of identifiers.
Merge pull request #29 from milessabin/feature/prime-identifiers

Allow primes at the end of identifiers.
Fix broken URL for MathJAX Javascript dependency.

Loaded using an DNS alias for the CDN, as per the
[instructions](http://docs.mathjax.org/en/latest/configuration.html)

I also switched from `latest` to `2.3-latest`, so that we don't
automatically perform major upgrades.
Address PR feedback, fix MultiChoiceSetting.contains