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() method Registration of a
feature implementation is done as described by the Java ServiceLoader mechanism that is used for service
discovery.