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 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.
Merge pull request #3801 from Ichoran/issue/8474

SI-8474  Inconsistent behavior of patch method
Merge pull request #3946 from gourlaysama/wip/t5254

SI-5254 running an empty scala script should succeed
Merge pull request #3967 from retronym/topic/mathjax

Fix broken URL for MathJAX Javascript dependency.
[nomaster] SI-8764 fix return type of case class productElement under Xexperimental

Under Xexperimental, productElement now returns the lub instead
of the weak lub of case class parameter types (numeric widening
shouldn't magically happen *inside* productElement).

This was removed from 2.12.x in 6317ae2.
Merge pull request #3938 from gourlaysama/wip/t8764

SI-8764 fix return type of case class productElement under Xexperimental
SI-8398 - unused warning reports lazy val as a method