rustdoc: make calls of markdown::render safer

Previously, external code might call `markdown::render()` without having
called `markdown::reset_headers()`, meaning the TLS key
`used_header_map` was unset.  Now `markdown::render()` ensures that
`used_header_map` is set by calling `reset_headers` if necessary.

Fix #17736
rustdoc: Correctly name lifetimes in bounds

Fix #16518
rustdoc: Support unboxed fn sugar in bounds
rustdoc: Remove dummy UnknownBound variant
rustdoc: Include lifetimes in re-exported bounds

Fix #17818
auto merge of #17796 : tomjakubowski/rust/rustdoc-ice-17736, r=alexcrichton

Previously, external code might call `markdown::render()` without having
called `markdown::reset_headers()`, meaning the TLS key
`used_header_map` was unset.  Now `markdown::render()` ensures that
`used_header_map` is set by calling `reset_headers` if necessary.

Fix #17736
auto merge of #17798 : tomjakubowski/rust/rustdoc-fix-bounds, r=alexcrichton

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`.