rustdoc: Fix up some bugs with bounds

This PR adds support in rustdoc for properly naming lifetimes in bounds, instead of just showing `'static` for everything. It also adds support for unboxed function sugar bounds, which were also previously rendered as `'static`.
this `UnknownBound` variant is unfortunate and only here as a fallback for a couple `Clean` impls in case the `DocContext` isn't typed. I'm not quite sure why those impls call `tcx_opt` and not `tcx`.