Switch to per-tool classpath configuration.

Review Request #11651 — Created June 7, 2021 and submitted — Latest diff uploaded




The original design for checkstyle and the Java mixin for tools provided
for a single configured classpath, defined as java_classpath in the
configuration file or as the $CLASSPATH environment variable.

In practice, this doesn't work too well. Both PMD and checkstyle used
some of the same dependencies, bundled in both their respective jar
files. Depending on the versions, these dependencies would conflict when
both were in a classpath.

Rather than having a single classpath, there's now tool-specific
classpaths, defined as tool keys in java_classpaths in the
configuration file.

The $CLASSPATH environment variable is no longer supported or
recommended, but if it's set for the process, it will still bubble
through. We may not want to support this long-term, but we get it for
free right now due to how execute() works, and it's not worth the
effort of preventing it.

All unit tests passed.