This decouples KSaneOption from KSaneOptionWidget so that it is possible to use the options directly in the future e.g. with an options model exposed to QML, and to split the widgets-based interface from the logic. The KSaneOption API is not meant to be final for this MR, but will be updated again later. As this MR is already quite large, I decided to stop here. It basically removes the creation of the KSaneOptionWidget from the KSaneOption and all its widget members. Instead, KSaneOptionWidget is able to take a KSaneOption during construction. As the widgets and the logic were heavily entangled before this MR, I could not really find a way to better split this up for the review so that it makes sense. There probably are some renames and added enums I could try to split out of this MR if that is preferred. The individual commits can all be compiled, but API changes in between and bugs are fixed later on, so I would like to squash them before merging.