More statistics for created and retained trees
Performance improvement: Specialize folds in accumulators.
Performance improvements: Changes to TypeAccumulators and variances.
Discard inaccessible denotations when merging.

When froming the &=merge of two denotations, we now discard denotations which have inaccessible symbols.

The reason for this change is that, without it, the following code gives the warning "cannot merge Int and Int() as members of one type, keeping only Int()".

    val m = new java.util.HashMap
    m.size

Indeed java.util.HashMap has a filed and method which are both named size. The field is package private, so is inaccessible from outside java.util, however.
Performance improvement: Streamline successful toplevel subtype checks
Resetting uniques and hashset reorg.

Uniques are now cleared after each run. Also, HashSets get a more standard API, without a label, but with configurable load factor.
Avoid memory leaks on repeated compilation.

Several measures:

1. Invalidate classOfId and superIdOfClass in ContextBase after each run. These contain local classes
   that should become inaccessible.

2. Also clear implicitScope cache that maps types to their implicit scopes after each run. (not sure whether
   this is needed; it did show up in paths from root, but on second thought this might have been a gc-able
   cycle.

3. Avoid capturing contexts in lazy annotations.

4. Avoid capturing contexts in functions that compute souceModule and moduleClass

5. Avoid capturing contexts in Unpickler's postReadOp hook.
Misc performance improvements by eliminating stupid allocations

- Avoid closure creation in Position.
- Avoid creating debug string in SymDenotations
- Avoid creating Flag translation tables in pickle buffers