SI-6502 Reenables loading jars into the running REPL (regression in 2.10)

Fixes [SI-6502](https://issues.scala-lang.org/browse/SI-6502), reenables loading jars into the running REPL (regression in 2.10). This PR allows adding a jar to the compile and runtime classpaths without resetting the REPL state (crucial for Spark [SPARK-3257](issues.apache.org/jira/browse/SPARK-3257)).

This follows the lead taken by @som-snytt in PR [#3986](https://github.com/scala/scala/pull/3986), which differentiates two jar-loading behaviors (muddled by `cp`):
 - adding jars and replaying REPL expressions (using `replay`)
 - adding jars without resetting the REPL (deprecated `cp`, introduced `require`)
This PR implements `require` (left unimplemented in [#3986](https://github.com/scala/scala/pull/3986))

This PR is a simplification of a similar approach taken by @gkossakowski in #3884. In this attempt, we check first to make sure that a jar is only added if it only contains _new_ classes/traits/objects, otherwise we emit an error. This differs from the old invalidation approach which also tracked deleted classpath entries.

(I will squash all the little commits after review)
What about other resources in the JAR (e.g. `.properties`)? I suppose the code below will work out okay, but it seems cleaner invert this condition to `entry.isFile && entry.getName.endsWith(".class")`.