Changed contract of ToolingModelBuilderRegistry.getBuilder() to throw UnknownModelException instead of UnsupportedOperationException.
Provider wraps 'unknown model exception' in protocol wrapper.
Busted out the protocol -> consumer and provider -> protocol adapters for BuildController to top-level classes and added some coverage.
Added some coverage for more failure cases when attempting to run a tooling API build action.
Javadocs.
Cleaned up some exception handling in the tooling API provider

- Don't go trawling through the causes of the build failure looking for an 'unknown model exception'. Instead, collect it inside the action and throw it later.
- Use the serialization magic to send a build action failure back to the client, so that we retain the type when deserializing.