Some sanity checking.
Return proper kind for PackageSymbol.
Revamp handling of top-level compunit def.

Previously we were repeatedly "defining" the package def for each compunit in
that package, but since the imports are uses nested in that def, this was bad.
It resulted in each compunit stepping on the uses defined in the previous
compunit.

Now we create a fake def for the top of each compunit, whose id is the package
plus the filename, and we allow the imports to accumulate uses to that def.
Then we close that def when we encounter the first class, and the classes are
top-level defs in the compunit.
Revamped MapDB to use custom IdSet.

Using a mutable HashSet meant that we were often running into issues when I
forgot to clone the set at the right time and ended up with the same set in the
write queue multiple times. MapDB is full of awesome thread-safety landmines.

Now we use IdSet which is immutable, so I can't fuck up. It's also probably a
lot lower overhead, but profiling shows only a very tiny speed increase.

I really have to stop writing my own collections classes, but pulling in FJ or
something just for this one thing (and having to stay in boxed land) seemed
undesirable.
Delete our test files when we're done.
Count up diagnostics when indexing and summarize.

Printing the output as if it were a real compile is noisy and misleading.