Sketch of abstracting over dependency details in incremental compiler

This represents a sketch of the idea that we can abstract over details
of a specific dependency kind. The goal would that only a few
implementations of methods in incremental would be sensitive to specific
dependency kind:

  1. Dependency extraction logic
  2. Implementation of Relations which adds dependencies to specific
     relations (or abstract over specific relations)
  3. Invalidation algorithm (Incremental.scala) which has different
     of each kind of dependency
  4. TextAnalysisFormat

In particular, adding a new dependency kind would not affect signatures
of existing methods.

What needs to be done:

  - finish refactoring so the code compiles again and previous semantics
    are preserved
  - introduce deprecated overloads that preserve old method signatures
    (this is required for preserving binary compatibility)
Implement abstraction over dependency kinds

This commit implements the abstraction over the dependency kinds and
deprecates the methods that were used to register files and their
dependencies.

Dependencies are now divided into two categories : Internal and
External dependencies. Moreover, each internal or external dependency
has a Context, which describes what introduced the dependency (for
instance, a dependency may be introduced by member reference or by
inheritance).

Dependencies must now be registered using the method `addSource` in
`Analysis` and in `Relations`. This method has the advantage of being
independent from the existing dependency contexts. That is, its
signature does not need to be modified whenever a new dependency
context is introduced.
Use new infrastructure in `AnalysisCallback`

A new infrastructure to register sources and their dependencies has
been introduced in `96378d2`.

This commit brings the required modifications to `AnalysisCallback`,
so that it uses it.
Use new infrastructure in `AnalysisTest`

A new infrastructure to register sources and their dependencies has
been introduced in `96378d2`.

This commit brings the required modifications to `AnalysisTest`,
so that it uses it.
Sketch of abstraction over dependency kind in Compile