Improve spans for RPITIT object-safety errors
No reason why we can't point at the `impl Trait` that causes the object-safety violation.
Also [drive-by: Add is_async fn to hir::IsAsync](c4165f3a96
), which touches clippy too.
For high-level intro to how type checking works in rustc, see the type checking chapter of the rustc dev guide.