Implement the new parsing rules for types in the parser, modifying the AST appropriately.
Fixup various places that were doing `&T+'a` and do `&(T+'a)`
Rote changes due to the fact that ast paths no longer carry this extraneous bounds.
Fix rustdoc
Fix odd example where bounds were permitted and then ignored
Add tests for the parsing of `+` and the error messages if people get it wrong.

Fixes #18772.