SI-4695, package object separate compilation.

The mechanism being used to notice when a package object
is being compiled from source does not appear to work at all.
I applied a different mechanism, which does appear to.
Imposing more structure upon package objects.

Introduced new data structure TopLevelDefinition, which unifies class
and module definitions in source files with those in class files. I found
this a necessary but (in its current form) insufficient step toward flushing
out the inconsistencies in name handling which are most easily seen in the
package object bugs.

Examine the generated output in demonstration here:

  test/files/run/top-level-definitionsWithMembers.check

A sampling:

  [namer] 3 top level definitions  (+3)
  +  --     ClassDef                              class  s.B
  +  --     ClassDef                              trait  s.A
  +  --     ModuleDef                             class  s.C

  [packageobjects] no changes
  [typer] no changes
  [patmat] 3 top level definitions
  *  7222   ClassDef/ClassSymbol                  trait  s.A                (7   members)  +3
  *  7223   ClassDef/ClassSymbol                  class  s.B                (7   members)  +3
  *  7224   ModuleDef/ModuleSymbol                object s.C                (7   members)  +3

  [superaccessors] no changes
  [extmethods] no changes
  [pickler] no changes
  [refchecks] no changes
  [uncurry] 3 top level definitions
  *  7222   ClassDef/ClassSymbol                  trait  s.A                (9   members)  +2
  *  7223   ClassDef/ClassSymbol                  class  s.B                (9   members)  +2
  +  7225   ClassDef/ModuleClassSymbol   <module> class  s.C
  -  7224   ModuleDef/ModuleSymbol                object s.C