The value property was sometimes not set. In the default case, this just added an empty setting instance (for a particular key), which appeared to do nothing until you've changed it. This appears correct because if it's not changed then it should be the same as the extruder's value, but if you then change the extruder's value it doesn't update its visible value but still has no value in the setting instance, so the value still falls back to the extruder and the setting ends up different from what is being displayed.
Contributes to issue CURA-1988.
Setting .value creates a new Python attribute in the object. Setting with setProperty creates the setting property, like we wanted.
Contributes to issue CURA-2011.
Due to a gnawing feeling in the back of my head, I tested this with an UM2 and adding settings failed there. This fixes it.
Contributes to issue CURA-2011.
Upon adding the setting (making it visible) it takes the setting from the support extruder stack. It doesn't update afterwards.
Contributes to issue CURA-2011.