And replace nullptr arguments for tooltips in UI button
creation functions with std::nullopt. Though the distinction
between "no tooltip" and "empty tooltip" doesn't seem to exist,
it seems safer to keep the distinction since it existed with null before.
This PR refactors each UI template into its own `interface_template_*.cc`
file.
* Added `interface_templates_intern.hh` which exposes shared utility
functions and macros.
* Doxygen comment sections that were redundant of the file name were
removed. If they contained additional description, they were added
to the file Doxygen `\file` header.
* Short templates that were closely related were kept together in single
files (e.g `uiTemplateHistogram`, `uiTemplateWaveform` and
`uiTemplateVectorScope` are all in `interface_template_scopes.cc`).
In this case, Doxygen comment section were preserved.
The only things remaining in `interface_templates.cc` are:
* Common utility function exposed by `interface_templates_intern.hh`
* Small independent templates (`uiTemplatePathBuilder`,
`uiTemplateNodeSocket` and `uiTemplateFileSelectPath`)
Ref: https://projects.blender.org/blender/blender/issues/117604
Pull Request: https://projects.blender.org/blender/blender/pulls/132468