1. Adds a `libdevilution_so` target when tests are enabled.
2. Each test file is now a separate binary target linked against `libdevilutionx_so` (can now run tests in parallel).
3. Tests are now defined in a separate `test/CMakeLists.txt` file.
4. Building the tests is now controlled by the standard `BUILD_TESTING` option (defined by CTest).
5. Tests are now built by default.
6. On CI, test errors are now reported.
Also:
* `.clang-format`: Enable SortIncludes in tests
* `path_test.cpp`: Fix -Wsign-compare
Changes how dependency options are handled and moves them out of
`CMakeLists.txt`.
Major changes:
1. The static default now takes `TARGET_SUPPORTS_SHARED_LIBS` into account
2. The `DIST` setting no longer affects the static default.
3. The static option is now visible for system dependencies as well.
(it was previously hidden by `cmake_dependent_option`).
4. The auto-detection mechanism for `libfmt` and `SDL_image` only
applies if the setting has not been set.
5. SDL2 on Android is now also linked statically,
resulting in a 1.1 MiB smaller APK.
When using non-system dependencies, the default should always be static,
as there are 2 main use cases for these:
1. Dependencies that we must currently vendor because our forks have
significant changes that are not yet merged/released upstream.
2. Platforms that have no system packages, such as Android and iOS.
In both cases, static linking is the most appropriate default.