Fixes #1514, #321. Fixes -SNAPSHOT issue by re-implemeting ChainResolver

Fixes #1514, #321

Adds `lastestSnapshots` flag to `updateOptions`, which controls the behavior of the chained resolver. Up until 0.13.6, sbt was picking the first `-SNAPSHOT` revision it found along the chain. When  `lastestSnapshots` is enabled (default: `true`), it will look into all resolvers on the chain, and compare them using the publish date.
The tradeoff is probably a longer resolution time if you have many remote repositories on the build or you live away from the severs. So here's how to disable it:

```scala
updateOptions := updateOptions.value.withLatestSnapshots(false)
```

Ivy by default uses latest-revision as the latest strategy. This strategy I don't think takes in account for the possibility that a changing revision may exist in multiple repositories/resolvers with having identical version number like 0.1.0-SNAPSHOT.
The implementation is a bit hacky, but I think it attacks the core of this problem.
Ivy doesn't use Java 5 generics, so we get like `Collection` all the time.