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/pending/run/top-level.check

A sampling:

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

  [patmat] 3 top level definitions
  *  6990   ClassDef/ClassSymbol                  trait  s.A         (7   members)  +3
  *  6991   ClassDef/ClassSymbol                  class  s.B         (7   members)  +3
  *  6992   ModuleDef/ModuleSymbol                object s.C         (7   members)  +3

  [selectiveanf] 3 top level definitions
  *  6990   ClassDef/ClassSymbol                  trait  s.A         (9   members)  +2
  *  6991   ClassDef/ClassSymbol                  class  s.B         (9   members)  +2
  +  6993   ClassDef/ModuleClassSymbol   <module> class  s.C
  -  6992   ModuleDef/ModuleSymbol                object s.C