Create a separate CppCompile task for each CppSourceSet
Switched the cpp plugin to use the new project.sources DSL

- CppPlugin attaches a CppSourceSet to every defined FunctionalSourceSet
- CppSourceSet.fullName gives a unique name for the sourceSet (not just unique for parent FunctionalSourceSet)
    - CppCompile tasks now include full source set name in task name
- Updated convention plugins to use new DSL instead of cpp extension
- Removed the CppExtension
Allow a FunctionalSourceSet to be added directly to a NativeBinary/NativeComponent
Initial cut of support for compiling C sources

- Only GCC supported so far
- Quite a bit of duplication with C++ stuff (CSourceSet, CCompile, CCompileSpec, etc)
   - Will deal with this when we add Assembler support as well
C-language support for VisualCpp