SI-8862 Fix treatment of inherited implicits in package objects

Two spots in implicit search fell prey to a trap with package
objects. Members of a package object are entered into the scope
of the enclosing package, but that doesn't form a suitable prefix
for determing the member type.

A REPL transcript paints a picture that speaks a 1000 words:

```
scala> :paste -raw
// Entering paste mode (ctrl-D to finish)

package p { class C[A] { def foo: A = ??? }; object `package` extends C[String] }

// Exiting paste mode, now interpreting.

scala> val p = rootMirror.getPackageIfDefined("p")
warning: there was one deprecation warning; re-run with -deprecation for details
p: $r.intp.global.Symbol = package p

scala> p.info.decls
res0: $r.intp.global.Scope = Scopes(class C, package object p, method foo)

scala> val foo = p.info.decl(TermName("foo"))
foo: $r.intp.global.Symbol = method foo

scala> p.typeOfThis memberType foo
res1: $r.intp.global.Type = => A

scala> val fooOwner = foo.owner
fooOwner: $r.intp.global.Symbol = class C

scala> p.info.decl(nme.PACKAGE).typeOfThis memberType foo
res3: $r.intp.global.Type = => String
```

This commit detects if we find an implicit in a package module,
and then uses the self type of the corresponding package object
as the prefix for the `ImplicitInfo`. This is done in both
`Context.implicitss` (which collects in-scope implicits), and
in `companionImplicitMap` (which harvests them from the implicit
scope.) In addition, it was necessary / possible to remove a special
case that excluded package object implicits, the referenced tests for
SI-3999 now pass without this.
More uniform treatment of package objects

  - Introduce `Symbol#packageObject` and `Type#packageObject`
    to lookup the member package object of a package class/module,
    and use this far and wide.
  - Replace the overly complicated (and still buggy) implementation
    of `Context#isInPackageObject` with a one liner. The simplifying
    insight is that if we select a symbol from a package prefix
    that does not own that symbol, it *must* have really been
    selected from the package object.
  - Change implicit search to use the cache in
    `ModuleSymbol#implicitMembers` via `Type#implicitMembers`,
    which lets the client code read more naturally.

Fixes a bug with `adapt::insertApply` that Adriaan spotted in a feat
of lateral thinking. This is tested in t8862b.scala. alladin763.scala
adds the test case from the bug originally remedied by `insertApply`
to check we haven't regressed.
Merge pull request #4001 from retronym/ticket/8862

SI-8862 Fix treatment of inherited implicits in package objects