gradient: store offset as a UnitInterval

We were manually clamping during parse. Using UnitInterval makes
encodes the invariant in the type.
8 jobs for parse in 14 minutes and 9 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Test
passed #177310
fedora test

00:09:49

failed #177282
fedora test

00:02:45

 
  Lint
manual #177284
allowed to fail manual
clippy
failed #177283
rustfmt

00:00:53

failed #177285
tarball

00:04:20

 
  Cross Distro
skipped #177288
debian_i386:testing
skipped #177287
debian:testing
skipped #177286
fedora:rawhide
 
Name Stage Failure
failed
tarball Lint
To learn more, run the command again with --verbose.
make[3]: Leaving directory '/builds/pborelli/librsvg/_build/librsvg-2.45.3/_build/sub'
make[3]: *** [Makefile:1954: /builds/pborelli/librsvg/_build/librsvg-2.45.3/_build/sub/target/debug/librsvg_internals.a] Error 101
make[2]: *** [Makefile:1460: all-recursive] Error 1
make[2]: Leaving directory '/builds/pborelli/librsvg/_build/librsvg-2.45.3/_build/sub'
make[1]: *** [Makefile:963: all] Error 2
make[1]: Leaving directory '/builds/pborelli/librsvg/_build/librsvg-2.45.3/_build/sub'
make: *** [Makefile:1676: distcheck] Error 1
ERROR: Job failed: exit code 1
failed
rustfmt Lint
-                    ).map(|l| UnitInterval::clamp(l.length))?);
+ self.offset.set(
+ attr.parse_and_validate(value, LengthDir::Both, validate_offset)
+ .map(|l| UnitInterval::clamp(l.length))?,
+ );
}
_ => (),
}
ERROR: Job failed: exit code 1