I don't think that keying on def-id is sufficient.

Imagine a test like this:

```
trait Getter<T> { }

trait Trait {
    fn method<G:Getter<int>>();
}

impl Trait for uint {
    fn method<G: Getter<uint>>();
    //~^ ERROR requires Getter<uint> but Trait provides Getter<int>
}
```