Checking for already existing symbols before creating new ones.

Otherwise we get spurious "compiled twice" errors on every symbol defined in a run after the first one.
Also, fixed a bug so that now run ids are correctly incremented.
Catch stale references

If a NamedType was denoted a SymDenotation one run, but stops being defined in the next, throw a staleSymbol error.
Make skolems live forever...

... because there's no way to reload them in a new run.
Update README.md
Replace open package module logic by special member lookups in a package class.

Rather than fiddling with scopes, which can lead to race conditions, we now special case member lookup and mamber name filters in ClassDenotations that represent packages.
Update README.md
Invalidate companions after indexing.

Invalidating them before indexing means symbols are touched before a new version is entered, which leads to "compiled twice" errors.
Generalize test infrastructure

Compiler tests can now be run with configurable number of compilers and runs in a compiler.
Skolems are permanent, but not packages.
Move maxConstraint computation to RunInfo to avoid references to stale symbols.
Fix for creating right number of compilers in Bench
Making completer take an implicit context

As a first step, we make the complete method in LazyType take an implicit context parameter. This requires
a fairly large propagation of implicit contexts.

The implicit parameter is ignored for classes inheriting from CompleteInCreationContext (which until now are all completers). The next step will be to make the complete methods of selective lazy types take the current context, rather than the creation context.
Getting rid of some CompleInCreationContexts
Symbol loaders no longer complete with creation context

Instead current ctx is passed through everywhere.

Question: can we factor out ctx better?
Get rid of CompleteInCreationContext

The only remaining completers that complete in creation context are the source completers defined in Namers. So a separate abstraction is no longer needed.
WIP: Fixes to bring symbols forward
Make Definitions load all symbols in current runId.
New scheme for incremental invalidation of parents.
Merge branch 'wip/bring-forward': Incremental compilation

1) Make definitions load symbols in current run
2) Change handling of invalid parents. Instead of a copied denotation, we now invalidate the caches of the existing one. (Copying was not enough, as old versions of denotations kept leaking in).
New scheme for attachments.

Added general way to put attachments on some base type (which needs to inherit from Attachment.Container).
Used it to turn typedTree map into an attachment.

Also, moved DotClass to dotc.util.