Header-only libraries and C++20 modules

Modules have module initializer symbols that need to be provided once to be reliable (the ODR applies here). Providing it in a library is the reliable way to do this.

The BMIs will be built again, but not object files.