Use some different linker flags in the c/c++ incremental int test, to ensure a different binary is produced (instead of the same binary with a mostly-but-not-always different timestamp).
Some minor tweaks.
Added a little more coverage for tooling API build actions.
Split out coverage for trying to use a version of Gradle that does not support the tooling API out to a separate test class and fleshed out a little.
Changed the tooling API load to create a broken connection rather than throw an exception when the target Gradle version does not support the tooling API.
Some javadocs.
Removed empty line
Added an initial description of the tooling API changes to the release notes.
Added a few more constraints for @ToolingApiVersion and @TargetGradleVersion:

- `=nnn` matches anything with the specified version base version.
- `current` matches the current Gradle version.
- `!current` matches everything other than the current Gradle version.
Pushed handling of InternalUnsupportedModelException down close to the provider.
Updated the 'unknown model' exception so that it informs the user which version the model was added, in the case of a built-in model, and when custom model support was added, in the case of some other model.
Javadocs.
Some more int test coverage of error reporting when using unsupported features.
Changed contract of ToolingModelBuilderRegistry.getBuilder() to throw UnknownModelException instead of UnsupportedOperationException.
Provider wraps 'unknown model exception' in protocol wrapper.
Busted out the protocol -> consumer and provider -> protocol adapters for BuildController to top-level classes and added some coverage.
Added some coverage for more failure cases when attempting to run a tooling API build action.
Javadocs.
Cleaned up some exception handling in the tooling API provider

- Don't go trawling through the causes of the build failure looking for an 'unknown model exception'. Instead, collect it inside the action and throw it later.
- Use the serialization magic to send a build action failure back to the client, so that we retain the type when deserializing.
Added a specific subclass of GradleConnectionException for the case where a build action fails with an exception.