This will prevent the playback history from vanishing unexpectedly in case a preset can't be loaded.
Also fixed a few typos in the Doxygen comments and clarified how the history is changed when changing the playlist.
This will enable any future changes to the header to be tested. These additional build checks are only executed if BUILD_TESTING is enabled (e.g. in our automated build checks) to speed up release builds.
Removed dependency on projectMtarget alltogether, as the playlist tests don't need the core library at all, only a few API functions which are mocked. Also made sure the mocked functions are declared as dllexport on Windows to match the dllimport declspec in the playlist library.
Target name is now just libprojectM::projectM for the main library instead of libprojectM::static or libprojectM::shared.
Now using CMake's default mechanism to select the resulting library type via the BUILD_SHARED_LIBS variable. Main use case will be working with the shared library, which is the default.
Playlist library now also builds as a shared library, including proper symbol exports.
Additionally, deleted the leftover TestRunner class and a few old and rather useless test cases.
Also added LLVM find_package call and as a link dependency if the build is configured for using (experimental) LLVM code.
Reorganized tests to link either one of the object libraries for unit testing.
Path scanning is using C++17's std::filesystem if available, but uses boost::filesystem as fallback. Using boost can be forced using the ENABLE_BOOST_FILESYSTEM CMake option.