Based on @Clément Foucault (fclem)'s suggestion in D6421, this patch implements support for
storing all tiles of a UDIM texture in a single 2D array texture on the GPU.
Initially my plan was to have one array texture per unique size, but managing
the different textures and keeping everything consistent ended up being way
too complex.
Therefore, this patch uses a simpler version that allocates a texture that
is large enough to fit the largest tile and then packs all tiles into as many
layers as necessary.
As a result, each UDIM texture only binds two textures (one for the actual
images, one for metadata) regardless of how many tiles are used.
Note that this removes per-tile GPUTextures completely, meaning that it
breaks D6421.