Improve some diagnostics around `?Trait` bounds * uses better spans * clarifies a message that was only talking about generic params, but applies to `dyn ?Trait` and `impl ?Trait` as well
For high-level intro to how type checking works in rustc, see the type checking chapter of the rustc dev guide.