This sets the CMAKE_EXE_LINKER_FLAGS_<BUILD_TYPE> instead of setting
CMAKE_EXE_LINKER_FLAGS based on what the current BUILD_TYPE is. With
multi-configuration IDEs the former breaks.
Instead of maintaining lists per compiler of flags that should
be enabled / disabled we now test for them instead. If they are
able to be used we append them.
Same with linker flags we test for them before assuming they work.