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.