This lets callees do stuff like: ```cpp CAttributeListBuilder{Context} .setOrUpdate<"_MY_ATTRIBUTE_1">() .setOrUpdate<"_MY_ATTRIBUTE_2">() .setOrUpdate<"_MY_ATTRIBUTE_3">() .get() ```
`mlir::Type` is now used as the default C++ type for representing all MLIR types, even when `ValueType` would be a valid constraint, unless doing so provides a clear benefit in that specific context.
CAttributeListBuilder