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).
Switched on the custom tooling model int test. The error handling still needs some work but the basics are all there now.