WIP: Avoid parsing XML on each instance creation for template files
This is a new version of !328 (closed), but targeting gtk4, thus allowing us to not change glib.
Instead of changing glib we mirror the required APIs as GtkBuildableParseContext and use that instead of GMarkup in the GtkBuildable API. This allows us to also support a precompiled form of xml. We also expose a gtk_buildable_parser_precompile function, which we automatically use when registering widget templates.
Not part of this commit is ahead-of-time pre-compilation into the resource files, but that is an obvious next step to avoid even more runtime work.