…rity != 0
To avoid confusing rule validation mixins with the special "Lock" mixin that was used in the internal `*::Validation` classes, this is now a superclass. Also renamed to `FixedValue` to avoid confusion with `ScheduleLock`.
When building a new time for `beginning_of_date` / `end_of_date` we now use `Time.local` or `Time.utc` correctly to apply the right offset for the time of year (in absence of ActiveSupport). Previously, only a "non-local" time with a fixed offset was was applied so a reference time 6 months from the target date could have the wrong DST offset applied. This now matches the same order of zone lookup used in `match_zone`. The fallback is to use the fixed offset only when no correct zone information is available.