Value class Depth.

It's the obvious translation from a raw Int into a value class.

It wasn't that long ago one could find a signature like this:

  def merge(tps: List[Type], variance: Int, depth: Int): Type

Do you feel lucky, method caller? Well, do ya?

Anyway, now it is:

  def merge(tps: List[Type], variance: Variance, depth: Depth): Type

Forget for a moment the fact that you'd probably rather not pass variance
for depth and depth for variance and look at the type signatures:

  (List[Type], Variance, Depth) => Type
  (List[Type], Int, Int) => Type
Logging cleanup.

Reduced the amount of extraneous logging noise at the
default logging level.

Was brought to my usual crashing halt by the discovery of identical
logging statements throughout GenASM and elsewhere. I'm supposing
the reason people so grossly underestimate the cost of such duplication
is that most of the effects are in things which don't happen, aka
"silent evidence".

An example of a thing which isn't happening is the remainder of
this commit, which exists only in parallel universes.
Merge pull request #2874 from paulp/pr/depth

Value class Depth.
Echo the location of JUnit test failure reports in `ant test.junit`.

For other dummies like me hammering out "My First Scalac JUnit Test."
A better diagnostic error for corrupt or missing JARs.

Augment the IOException with the name of the file we're trying
to open.

Motivated by a troubleshooting session with partial downloads
of JARs from Maven central breaking the Scala build on Martin's
laptop.

The test case only tests our part of the error message, so as not
to be platform / JDK specific. Otherwise, it would check that the
correct cause exception was present and accounted for.
Merge pull request #2883 from retronym/topic/junit-zip-archive

A better diagnostic error for corrupt or missing JARs.