Allow programmatic selection of options while disabled

Because ButtonOptionWidget did not prevent setting the option to active
while disabled, but OptionWidget did prevent setting the option to
selected while disabled, strange behavior would happen when an option was
selected for the first time, while the select was disabled.

This cleans up this mess by not only allowing selection while the select
is disabled (programmatically) but also preventing ButtonSelectWidget from
being set to active if the option class has been configured as
unselectable.

Bug: 65916
Change-Id: Ifaf7e2062529e70d8b038c4cfa9a60c94b5d230f