CI: Add AArch64, ARMv7, and release build variants
Does what it says on the box. The series is a bunch of cleanups and commenting, getting heavier with templating, and then using that to add multiple axes: architectures (AArch64, ARMv7, x86-64) and build types (debug and release).
ci-clang branch further adds Clang builds, but unfortunately we're hitting the same problem as weston!675 (merged), where our homegrown test suite actually gets in the way because it makes assumptions about how the compiler/linker will pack the contents of ELF sections, which are in no way guaranteed at all. Unfortunately and unlike Weston, our structures seem to be exactly the wrong size such that there's no alignment which will work well.
The test suite further gets in our way by forking a lot - which is specifically really slow with the ASan/LSan runtime we have on AArch64 - so in order to get functional tests on AArch64, we disable leak checks, on the assumption that AArch64 won't leak any more than ARMv7+x86-64 do.
The right answer is to delete even more of the test suite, and probably to use something like µtest for both this and Weston, because writing a test suite which does a bunch of technically interesting things is kind of distracting from the core goal of writing a window system. Especially when it doesn't work.
@arichardson I think this might actually make your life a fair bit easier for BSD by templating much more of what we have? I've exhausted my CI time for this week (have mostly been doing this in downtime between doc writing for a couple of crushing deadlines), but if you're not able to check how FBSD would fit on top of this this week, I can check it out next week.