Get gets a plugin and initialize it using the given options. If the plugin does
not exist, its builder if registered will be used with the options to instantiate
the plugin. If the builder is not registered, an error will be returned.
type Plugin[O any] interface {
// Init initializes the provider using some options. Init(...Option[O])
// String returns the implementation name. String() string
}