Some changes to GradleVersion's API.

- GradleVersion.version() is stricter wrt the version strings it will accept.
- Replaced GradleVersion.getVersionBase() with getBaseVersion() that returns a GradleVersion.
- Replaced GradleVersion.getMajor() with getNextMajor() that returns a GradleVersion.
Changed @TargetGradleVersion and @ToolingApiVersion to compare against base versions, and to accept '<nnn' patterns.
Javadoc updates.
Pushed the check whether a model is supported by the provider down from ModelProvider to the various adapters.
Moved the special cases for creating partial models for old provider versions down to the pre-1.0-m8 adapter.
Moved validation of provided operation parameters down from ModelProvider to the specific provider adapter.

- Removed a bunch of now unused methods from VersionDetails.
- Include target Gradle version in error message when unsupported parameter is used.
Pushed the remaining check from ModelProvider down to the appropriate provider adapter and remove ModelProvider.