feat: replace shift --hours with --hours-min/--hours-max for random time range

Replace the single --hours option on the shift command with
--hours-min and --hours-max options. When used with --days, the
shifted timestamp now randomizes the hour within the specified
range and also randomizes minutes and seconds.

Changes:
- shift command: --hours replaced by --hours-min/-m and --hours-max/-H
- Add validation: hours-min/max cannot be used with --at
- Add validation: hours must be 0-23, hours-min <= hours-max
- Update design doc to reflect new options and algorithm
- Use fixed date (hour=0) in test fixture for deterministic tests
- Add 6 new test cases covering hours-min/max combinations and validation

Co-authored-by: Qoder
