Changed the C++ executable plugin to allow the source files of the executable to be declared and queried. Adds an `executable` extension to the project that build logic can use to declare the source files. Also change the behaviour so that the convention location is only used if no source locations are defined, similar to how the Swift plugins behave.
Changed the behaviour of the Swift plugins so that the convention for where to find the source files is applied only if no source files or directories are specified by the build logic. Previously, it was applied _in addition to_ the locations explicitly specified.