Move language registration closer to being static

- Plugins declare a LanguageRegistration class with language meta-data
- Migrated native-lang plugins to Java
Language registration includes defined binary tool extensions

- For any language, a number of ‘tools’ can be defined
- These tools are added as extension to each binary on construction
Move more functionality out of LanguageBasePlugin to ComponentModelBasePlugin