Spike of supporting implicitly resolving the android plugin.

Nowhere near final implementation.
Unused ivar.
Introduce PluginHandlerInternal, internalising the resolver bits.
Remove unnecessary constant.
Promote inner class.
Promote inner class.
Allow plugins to be versioned.
plugins {} execution only resolves to delegate (i.e. PluginHandler).

This is a break from current behaviour (you can access the Project in buildscript {}).
Fix for trying to use plugins {} on a non pluggable target.
Promote inner class.
Split plugin resolution from dependency resolving.
formatting.
Some TODO notes.
Plugin request might not have a version.
Make repository used for resolving plugins less hardcoded.
Change the script classloader structure to include classes added by plugin application using the new DSL.

This is an incomplete solution as there is no attempt made to try and reuse classloaders and their classes… meaning that the same class loaded in two different projects are not going to be the same runtime class.
Merge branch 'release'
Fix test due to changes the script class loader.
Fix the new plugin dsl tests.

The test for the android plugin is very unstable as it's resolving the real android plugin. The test needs to be updated so that we can inject a stable stand in for this.
GRADLE-2931: Key dependencies based on group ID, artifact ID, type and classifier.