Each component inherits from the kaishi.core.pipeline_component.PipelineComponent class
When a pipeline component is initialized and added to the pipeline, the only argument is a dataset that it stores as a member
A default "configure" method is inherited, but if custom configuration is needed, the child class should create a new one with only named arguments (the config defaults)
It's likely that a pipeline would vary often. Having a method like dataset.configure() that guides the user through the process would be useful.