What about if we also run `validator` on `set()`. If there is a `validator` and it fails, do not set value and `return false`, otherwise set value and `return true`.

The behavior in the status bar would change. Currently, for values out-of-range it changes them to upper or lower boundary (which is kinda weird anyway). Instead, value would not change at all, which is what happens now if value is wrong type (e.g. enter "x" for "spaceUnits").