This adds a AttributeMacros configuration option that causes certain
identifiers to be parsed like a attribute((foo)) annotation.
This is motivated by our CHERI C/C++ fork which adds a capability
qualifier for pointer/reference. Without this change clang-format parses
many type declarations as multiplications/bitwise-and instead.
I initially considered adding "capability" as a new clang-format keyword,
but having a list of macros that should be treated as attributes is more
flexible since it can be used e.g. for static analyzer annotations or other language
extensions.
Example: std::vector<foo * capability> -> std::vector<foo *capability>
Depends on D86775 (to apply cleanly)