Various plugin improvements:

* Decouple plugin from Cobertura version - plugin doesn't compile
  against a specific version. Instead it use the Classload and
  reflection to load the Main tasks and execute them. Allows for
  supporting older versions of Cobertura.
* Improved plugin detection for Groovy and Scala - use Gradle's action
  handlers to detect when Groovy or Scala is added and configured
  support for them. Allows those plugins to be declared out-of-order
  from Cobertura.
* Improved task dependency configuration - Isolate Cobertura to the
  project declaring the the plugin. No cross-project coupling which
  could impact Gradle parallelization. Provide sane defaults for Test
  and AbstractCompile tasks and provide mechanism for overriding/adding
  additional task dependencies.
* Convert CoberturaRunner.java to CoberturaRunner.groovy - no reason
  this as a Java class.