Merge branch '2023-04-04-update-to-clang-16'

- Update our CI to use clang-16 for tests. This also changes slightly
  how we do linker lists so that we don't rely on undefined behavior
  that lead to clang-15 and later failing to work (and in some cases
  seemingly, earlier versions of clang would sometimes fail).