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.
What if some distributions want to package the shardController in the apiServer binary.  Maybe it serves on a different port, but how does it refer to itself as a Service.

Also, for plugins which provide essential functionality, such as authorization, bootstrapping is going to be hard if they can only be a Service.