Eviction warnings (Fixes #1200)

Fixes #1200.

This implements all stories from https://github.com/sbt/sbt/wiki/User-Stories%3A-Conflict-Warning.
sbt will display eviction warnings when it resolves your project's managed dependencies via `update` task. Currently the eviction warnings are categorized into three layers: `scalaVersion` eviction, direct evictions, and transitive evictions. By default eviction warning on `update` task will display only `scalaVersion` evictin and direct evictions.

`scalaVersion` eviction warns you when `scalaVersion` is no longer effecitive. This happens when one of your dependency depends on a newer release of scala-library than your `scalaVersion`.

```
[warn] Scala version was updated by one of library dependencies:
[warn]     * org.scala-lang:scala-library:2.10.2 -> 2.10.3
[warn] Run 'evicted' to see detailed eviction warnings
```

Direct evctions are evictions related to your direct dependencies. Warnings are displayed only when API incompatibility is suspected. For Java libraries, Semantic Versioning is used for guessing, and for Scala libraries Second Segment versioning (second segment bump makes API incompatible) is used.

```
[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn]   * commons-io:commons-io:1.4 -> 2.4
[warn] Run 'evicted' to see detailed eviction warnings
```

To display all eviction warnings with caller information, run `evicted` task.

```
[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn]     * com.typesafe.akka:akka-actor_2.10:2.1.4 -> 2.3.4 (caller: com.typesafe.akka:akka-remote_2.10:2.3.4,
org.w3:banana-sesame_2.10:0.4, org.w3:banana-rdf_2.10:0.4)
```

/review @jsuereth 
I was thinking maybe I should define `test:evicted`. I need to probably prevent `Compile` eviction from showing up twice if `Test` and `Compile` are both in there.