Define ComponentPlugin API type

Just writing down how I think plugins should get registered with the system. Was thinking it'd be nice to do the event thing as a plugin.
Copying text from #386:

We want to enable an open ecosystem. It must be possible to implement new shared services and run them on Kubernetes. Internally, the vast majority of our services are components without inherent special privileges or configurations running on our core infrastructure. This empowers application teams to build their own services, as well as facilitating prototyping and even long-term deployment of new services. 

Kubernetes will be used by some as a multi-user service and by others as a single-user toolkit. It needs to be possible to add functionality when used in either mode.