Handle higher-rank lifetimes when generating type IDs

Normalize late-bound regions in bare functions, stack closures, and traits and include them in the generated hash.

Closes #19791

r? @nikomatsakis (does my normalization make sense?)
cc @alexcrichton 

I'm guessing this is the effect of the incorrect `'tcx` lifetime placement?
As odd as always