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)
Notes about the javac fix.
Merge pull request #1709 from sbt/wip/notes-for-javac

Notes about the javac fix.
rename scripted tests
Fixes #1710. Fixed cached resolution mutual eviction

When stitching the minigraphs together only exclude the artifacts that
were evicted in *all* graphs, instead of some graphs.
Consider the following scenario:
- Y1 evicts slf4j-api 1.6.6 and picks 1.7.5
- Y2 evicts slf4j-api 1.7.5 and picks 1.6.6
At the root level, we need to use our own judgement and pick 1.7.5.
Merge pull request #1713 from sbt/fix/1710

Fixes cached resolution mutual eviction (drops slf4j)
scalariform
Fixes #1711. Fixes cached resolution pulling in % "test" from subproj deps
Fixes #1704. Fixes cached resolution + module-level exclusions
expand internal dependencies more accurately
Merge pull request #1715 from sbt/fix/1711

Fixes #1711 and #1704. Cached resolution fixes
0.13.7-RC3
fixes #1719. cached resolution: fixes handling of classifier and other explicit artifacts
fixes #1711, #1716. Fixes configuration remapping

The actual change is one line at line 64. nextConfMap takes dep instead
of dd.
Merge pull request #1720 from sbt/fix/1719

cached resolution: Fixes #1711, #1716, #1719
Fixes #1723. classifier-related fixes

- minigraph sha now contains extra attributes from artifacts
- artifacts are merged from different mini graphs (in some cases, this
should result to better resolution than stock ivy)
Merge pull request #1724 from sbt/fix/1723

Fixes #1723. classifier-related fixes
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 `c09a391`.

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 `c09a391`.

This commit brings the required modifications to `AnalysisTest`,
so that it uses it.