More improvements to error handling for component selection/metadata rules

+review REVIEW-5248
Make ArchiveEntry immutable.

It's effectively a value type.

+review REVIEW-5251
Some simplifications to nested archive entries.

+review REVIEW-5251
Release notes for build comparison plugin improvements.

+review REVIEW-5251
Disabled integ test until I figure out ci failures.
Selection rules should not apply to parent poms

+review REVIEW-5253
Revert change that broke test
Converted the last of the native integration tests to use the model DSL
Removed use of ‘executables’ and ‘libraries’ extension from language-native unit tests
Migrated final native sample to model DSL block
Removed ‘nativeRuntime’ and ‘nativeComponents’ extensions, which are no longer required
Tidy up of test class and some of the assertions.
GRADLE-3147: Introduction of ArtifactIdSpec for verifying if a module artifact should be excluded. The implementation is not complete yet. ModuleSelector is a composite of ModuleVersionSpec and ArtifactIdSpec. This class will allow for having a single selector for DependencyEdge.
AbstractNativeComponentSpec extends BaseComponentSpec
AbstractNativeBinarySpec extends BaseBinarySpec
Use @ComponentType to register native component types
Initialise component source sets via a model rule
- Still uses live components container in order to provide configuration that
  should apply before user-defined configuration
Updated the contributing guidelines to reference new location for the dev list and also that we now target Java 6 and later.
Removed the ‘executables’ and ‘libraries’ extensions
Removed the ‘languages’ extension and register all languages via model rules