Declares a custom 
ComponentSpec type.
 The following example demonstrates how to register a custom component type using a plugin with a
 
ComponentType annotation.
 Furthermore the plugin creates an instance of SampleComponent named 'sampleComponent'.
 
 interface SampleComponent extends ComponentSpec {}
 class DefaultSampleComponent extends BaseComponentSpec implements SampleComponent {}
 apply plugin: MySamplePlugin
 class MySamplePlugin extends RuleSource {
     @ComponentType
     void register(TypeBuilder<SampleComponent> builder) {
         builder.defaultImplementation(DefaultSampleComponent)
     }
     @Mutate
     void createSampleLibraryComponents(ModelMap<SampleComponent> componentSpecs) {
         componentSpecs.create("sampleComponent")
     }
 }