Change SettingViability to be more similar to kotlin.Result (an inline class that wraps Any?) so there is no overhead in the event that the setting is Viable.
We may be able to optimize even more because there doesn't have to be a value associated with a Viable setting.