Part of T74960 (and hence T75724). This commit only adds the basics helper code, and alter some internal libquery code to use it. Porting each IDType to the new system will be done gradually from there, to allow better detection and handling of potential issues. Differential Revision: https://developer.blender.org/D7598