Fix compilation ways

This fixes a number of bugs/odd corner cases with different compilation ways:
* HPC can now generate reports even if ways besides the default are enabled.
* `--enable-executable-profiling` is now `--enable-profiling` and implies `--enable-library-profiling`. Otherwise, the build will fail if the executable depends on the library, which is the usual case. You can still try to build the executables with profiling and the library without by passing `--enable-profiling --disable-library-profiling` to configure.
* `--enable-executable-dynamic` now implies `--enable-shared`. Otherwise, the build will fail if the executable depends on the library, which is the usual case. You can still try to build the executables with dynamic linking without building a shared library by passing `--enable-executable-dynamic --disable-shared` to configure.
* Test cases for all these issues are added.
* The documentation for these options is updated (or added, in the case of the previously undocumented options).

Fixes #2281.
I don't 100% understand why we added another flag for the same thing.