Allow "::" in names for custom targets
Currently, out of all targets, there is a way to create a target name with "::" in the name. Either via an alias, or when declaring them directly. For example,
add_library(will::the::real INTERFACE IMPORTED)
add_library(slim-shady)
add_library(slim::shady ALIAS slim-shady)
add_executable(please-stand-up)
add_executable(please::stand::up ALIAS please-stand-up)
add_test(please::stand::up? please-stand-up)
add_custom_target(marshall::mathers) # This is an error
add_custom_target(sorry-not-sorry-for-this-code-example)
In the above, each of these targets can exist with the exception of the last one. I'm unsure if this would be an issue if it were added, however it would be nice for symmetry as I can add properties to a custom target that are used by a custom command, or even by itself via generator expressions. However it can't support a "::" as a "namespace" technique.