Move `TreeFormatter` out of core and decouple from `TreeVisitor` by introducing an interface to represent something that can receive diagnostic information.
Some improvements to the 'found multiple transforms' error message. Also apply some consistent formatting to some of the other variant error messages, by reusing `TreeFormatter`.
- Some tweaks to the formatting of the error message received when no tool chains are available to build a particular platform. - Changed DefaultToolChainRegistry so that it does not create a ToolChain instance if no defaults have been registered.