Services implementing this interface will be used to add new features to the
shell, like custom command namespaces, completors etc.
Registered (i.e. available) features are exposed by the Shell#getFeatures()
Registration of a feature implementation is done as described by the Java
ServiceLoader mechanism that is used for service discovery.