Changed BuildScopeServices so that the Gradle and Settings scope services are stopped at the end of the build.
Changed DefaultCacheFactory so that it no longer closes caches implicitly at the end of the build. Instead, it's the client's business to close the caches.
Simplified DefaultCacheFactory so that it is simply a factory for caches.
Introduced prebuilt binaries
- Added PrebuiltLibraries, PrebuiltLibrary and associated binary model elements
- Moved listing of binaries out of LibraryBinaryLocator into NativeDepednecyResolver
- Added LibraryLocator that looks in PrebuiltLibraries for matching library

Cleaned up library locator: moved listing of binaries into resolver

Checkstyle fixes
Moved model rule into configure package
Removed incorrect javadoc
Libraries are no longer responsible for creating a NativeDependencySet
Split parts of NativeBinary that only apply to binaries built by Gradle into ProjectNativeBinary
Fix test for windows/linux
Replaced NativeBinary.outputFile with type-specific methods:
-  `ExecutableBinary.executableFile`, `SharedLibraryBinary.sharedLibraryFile` and `StaticLibraryBinary.staticLibraryFile`.
Test fixes
Removed unused constructor parameter
Remove test that wasn't supposed to be committed
Used the more general ComponentIdentifier type in diagnostic dependency result implementations. Added more testing.
Extracted ProjectNativeComponent out of NativeComponent, for methods that relate to components built by Gradle
Renamed NativeBuildComponentIdentifier -> NativeProjectComponentIdentifier
More DSL docs
Tidied up the the native model somewhat
- ExecutableBinary and LibraryBinary no longer extend NativeComponentBinary (and so do not provide access to component)
- Inlined NativeComponentBinary into ProjectNativeBinary
- Renamed NativeComponentInternal to ProjectNativeComponentInternal
- Pushed NativeBinary.buildable down to ProjectNativeBinary
- Switched LibraryLocator back to LibraryBinaryLocator, which lists _all_ binaries matching a requirement
- VisualStudio model classes deal in terms of ProjectNativeComponent and ProjectNativeBinary
PrebuiltLibrary no longer extends NativeComponent
More native model refactoring:
- Inlined NativeComponent into ProjectNativeComponent
  - Removed NativeComponent altogether
  - Executable/Library now extend ProjectNativeComponent
  - PrebuiltLibrary is independent of ProjectNativeComponent
  - Remove utility interfaces joining Executable/Library to ProjectNativeComponent

This is effectively reverting earlier changes to the component hierarchy, by simply
renaming NativeComponent -> ProjectNativeComponent. This is now possible due to the
unlinking of LibraryBinary and PrebuiltLibrary from NativeComponent