Test for executable and preserve erroneous path for messages

#356 was merged before I could comment:

If an alternate compiler is specified, then check if this is actually executable before assigning it so that we don't end up with specifying an empty name to CMake. If the path does not exist, it will be preserved so that CMake will complain with an easily identifiable error message.