Profile report refactoring - removed some code after finding common abstraction.
Profile report - added some stuff needed by discovery (I removed it earlier accidentally).
Tweaked the sorting of profile report operations so that if elapsed time is the same, the description of the operation is used. This way we guarantee that the tests are not flaky and the order of items is consistent.
Profile report - added some stuff needed by discovery (I removed it earlier accidentally).
GRADLE-2111: add more integtest coverage for junit categories
GRADLE-2111: tweak error handling for wrong defined exclude categories; add integtest for combination of @ignore and @category
Move log warnings about ignored ivy file content down to debug level.

- Ideally, these should only be logged once when the module is actually resolved from a remote repository.
- Once we don't use ivy.xml for internal meta-data persistence, we should be able to move these messages up to WARN, I think.
- Also, used the correct string substitution characters for log messages
GRADLE-2111: convert JunitCategoriesIntegrationTest to a CrossVersionSpec
Changed DefaultConnection to also implement ModelBuilder. Currently just assumes that the model name == the model class.
Changed DefaultToolingImplementationLoader to prefer ModelBuilder over the old interfaces. Restructured the ConsumerConnection implementations.
Moved the logic for mapping between model type and name into ModelMapping.
Added toString() method.
Pushed the use of model name further down into the provider.
Removed some unused types.
Push using the tooling model name instead of type down further.
Deprecated BuildActionRunner.
Changed ToolingModelBuilder so that it accepts the target model name rather than a model type.
Added exception that provider can throw to indicate an unknown model as been requested.
Changed tooling API provider to ship the serialised model + its classpath across to the client process, so that the model classes do not need to be packaged as part of the tooling API provider (eg they may be provided by a plugin).
Don't fail for unknown models in the tooling API consumer, just pass it to the provider (for those providers that support custom models).