Don't crash when checking types with only region parameters for destructor safety

This branch has a fix for #15557 (a2bcef9) as well as a variety of patches I found useful while debugging this issue. These include adding `Show` impls to a variety of types, including the majority of `syntax::ast` and some of `middle::ty`.
The formatting here would generally look like:

```rust
format!("foo bar baz \
         aligned after quote",
        aligned_with_quote);
```