LanguageSourceSet no longer requires a FunctionalSourceSet for construction
SourceSets are copied from component -> binary on construction, rather than relying on a 'live' collection
Copy sources from component->binary on construction
Use Action in place of Closure on ComponentSpec.sources()
Moved FunctionalSourceSet off the public ComponentSpec api
Renamed some tests to match tested class
BinarySpec has it’s own FunctionalSourceSet, copied from component
All LanguageSourceSet instances are associated with a component instance

- ProjectSourceSet is a flat collection of LanguageSourceSets
- Each component has a FunctionalSourceSet
- Each binary for a component gets a copy of the component's FunctionalSourceSet
- Any source set added to a FunctionalSourceSet is automatically in the ProjectSourceSet
- Most rules that deal with source sets iterate over sources for a component, rather than everything in ProjectSourceSet
- Updated all tests so that LanguageSourceSets are created directly for a component/binary,
  rather than declaring them in the sources container and then referencing them from component/binary
Updated language-native integration tests to define components within model block
Migrate most platform-native integration tests to define components within model block
Migrate ide-native integtests to define components within model block
Migrate more native integration tests to define components within model block
Migrate (most) native samples to define components within model block
Convert SourceSet javadoc to define components within model block
Target test binaries to x86, to fix tests on cygwin/mingw
Comment on functional source set