Remove trait `DependencyContext` in favor of enum

Since `DependencyContext` is needed in the compiler interface
subproject, it has to be defined in this same subproject.

`DependencyContext` is needed in this subproject because the
`AnalysisCallback` interface uses it.
Abstract over dependency context in Compile

This commit completes the abstraction over dependency kinds in the
incremental compiler, started with #1340.