Teach add_custom_target to check the policy too. Extend the policy to disallow reserved target names that we use for builtin targets like "all". Extend the RunCMake.CMP0037 test to cover these cases.
Exclude Borland and NMake from the CMP0037 test. They do not accept the colon in a target name.