The callback system to iterate over every formatter of a given kind in
a TypeCategoryImpl is only used in one place (the implementation of
type {formatter_kind} list), and it's too convoluted for the sake of
unused flexibility.
This change changes it so that only one callback is passed to ForEach
(instead of a callback for exact matches and another one for regex
matches), and moves the iteration logic to TieredFormatterContainer
to avoid duplication.
If in the future we need different logic in the callback depending on
exact/regex match, the callback can get the type of formatter matching
used from the TypeMatcher argument anyway.
did you want to add a reference here? A const by-value argument is not particularly useful.