SI-7810 Reflect private constructor

`JavaMirror.constructorToJava` uses `getDeclaredConstructor` now
instead of `getConstructor`.
Noise reduction + minor enhance in TreeCheckers.

Misc irrelevant work, which I can only offer as-is. It lowers
the noise in -Ycheck:* output and performs some common sense
chillaxes like not screaming ERROR IN INTERNAL CHECKING! WE'RE
ALL GOING TO DIE! when a tree doesn't hit all nine points at
the Jiffy Tree.

You can see some reasonably well reduced symbol flailing if
you run the included pending tests:

  test/partest --show-diff test/pending/pos/treecheckers

Example output,

Out of scope symbol reference {
      tree  TypeTree             Factory[Traversable]
  position  OffsetPosition       test/pending/pos/treecheckers/c5.scala:3
  with sym  ClassSymbol          Factory: Factory[CC]
   and tpe  ClassArgsTypeRef     Factory[Traversable]
   encl(1)  ModuleSymbol         object Test5
    ref to  AbstractTypeSymbol   X (<deferred> <param>)
}
SI-7817 Tests to show the foibles of mkAttributedRef

To `package`, or not `package`, that is the question.

This lines marked with !!! get this wrong, and be remedied
by the next commit.

This problem is culpable for the crash in the enclosed `pending` test.
SI-7817 Fix regression in structural types

Calls to structural types are converted to reflective calls
in the `cleanup` phase, which, along with `mixin`, does its work
after `flatten`.

`Symbol#owner` behaves in a phase dependent manner; after flatten
the owner of lifted class is given as the enclosing package.

Except when they're not.

`ModuleSymbol`s representing an object nested inside a class
are viewed dually as modules *and* methods (see the comments on
`isModuleNotMethod` for some background). When it comes time to
flatten, we're presented with a quandary: the method must clearly
stay owned by the enclosing class, but surely the lifted module
should be owned by the enclosing package, to have the same owner
as its associated module class.

The `method` nature of this symbol seems to win:

    override def owner = {
      if (Statistics.hotEnabled) Statistics.incCounter(ownerCount)
      if (!isMethod && needsFlatClasses) rawowner.owner
      else rawowner

This wrinkle leads to a wrong turn in `TreeGen#mkAttributedRef`,
which incorrectly rewrites `REF(O)` to `p1.`package`.O`. It seems
this problem has gone unnoticed because the tree emitted referred
to a static symbol (the reflection cache for structural types),
and the backend simply elided the qualifier `p1.package`.

A recent change to the backend makes it more conservative about
dropping qualifiers on the floor, and it started emitting a reference
to a package object that doesn't exist.

This commit despairingly checks `isDefinedInPackage` of both the
module *and* the module class. The test cases from the previous
commit illustrated the status quo, and this commit updates the
joint compilation test with the bug fix. A new test is to show that
the symptom (structural type crash) is now fixed.
Avoid spurious tree checker warning for higher order type params

TreeCheckers is trying to find references to a) local types
(term owned) or b) to type parameters from a trees that are
not ancestors of the a) term or b) type param owner. Such
references are ill-scoped and suggest that a tree has been
transplanted without proper substitution.

However, this check failed to account for higher order type
parameters, as seen in the spurious warning emitted by:

    test/pending/pos/treecheckers/c5.scala.
Merge pull request #10 from retronym/topic/tree-checker-higher-order-tparam

Avoid spurious tree checker warning for higher order type params
Merge pull request #2915 from retronym/ticket/7817

SI-7817 Fix regression in structural types
Merge pull request #2926 from paulp/pr/treecheckers

Noise reduction + minor enhance in TreeCheckers.
Merge pull request #2904 from som-snytt/issue/reflect-priv-ctor

SI-7810 Reflect private constructor