Rework ScalaPlatform.

Review Request #3779 — Created April 28, 2016 and submitted — Latest diff uploaded

molsen, patricklaw, stuhood

- Uses naming conventions instead of boilerplate.
- New design clarifies the difference between named versions and
the 'custom' version mechanism.
- Now supports the two roles of the compiler jar: as a tool, and as a
runtime library that certain code (namely scalac plugins) needs
to have injected as a dep.
- Allows us to get rid of the ugly hack in where
we brute-force add the runtime and compiler jars to all classpaths.
The runtime was already added by ScalaLibrary, and now the compiler
is added by ScalacPlugin (the only thing that needs it, currently).
So the entire hack is unnecessary.

Gets rid of the --runtime-spec option, as it was incongruous to have
this only for the runtime lib but not the compiler, repl or scalastyle
tool, and this incongruity is emphasized now that the compiler can also
be a runtime lib, as well as a tool.

One particular repo may need this option in the future , and if so
we'll restore it, but I'm currently exploring other options with
that repo owner.

Also renames some vars in inner functions, to avoid shadowing.

CI passes: