Restructure parsing of paths, which is quite tortured
Support parenthesized paths `Foo(A,B) -> C` that expand to `Foo<(A,B),C>`. These paths also bind anonymous regions (or will, once HRTB is fully working).

Fixes #18423.
Remove the unboxed closure `|:|` notation from types and trait references completely.