Abstract over dependency kind in Analysis

Work in progress to make it easier to add new kinds of dependency.

Please see this discussion : https://groups.google.com/forum/#!topic/sbt-dev/clIbzCp9VX8
The `filter` here is linear scan. This will hurt performance in larger projects. You'll need to change `extSrcDeps` to be a Map. While you are at it, I'd change `extSrcDeps` to be `Map[File, Iterable[ExternalDependency]]`.