Reduce cpp warnings: portability fixes

- Filter out warning flags, leaving all other set flags in place.  What's currently happening is that you're removing *all* flags, both warnings and everything else, which is going to be problematic.  The filtering approach is subtractive and so far safer.  If you do need the corresponding `-Wno-xxx` for warnings aggregated in `-Wall` or `-Wextra` we can add these, but they *must* be checked before use or else this *will* break things.  It's trivial to do so, and we can add such things to CompilerChecks or separately here.  It's absolutely unacceptable to use features without making sure they work; this is the central point to cmake, and skipping this will inevitably result in breakage.
- Remove the fatal-warning flag.  The intent is fine, but this can be done in CompilerChecks, and having an option which will break if set a certain way on different platforms is quite unacceptable for portability.