b2c1384e

ical: say what the spec says about COUNT and BYSETPOS

Two `Validity` instances in `ICal.PropertyType.RecurrenceRule` disagree with RFC 5545, in opposite directions.

## `Count` carries `BYSECOND`'s sentence

```haskell
instance Validity Count where
  validate s@(Count w) =
    mconcat
      [ genericValidate s,
        declare "Valid values are 0 to 60." $   -- <- this is BYSECOND's bound
          w >= 0 && w <= 60
      ]
```

§3.3.10 says only this about COUNT, and bounds the value nowhere:

> The COUNT rule part defines the number of occurrences at which to
> range-bound the recurrence.  The "DTSTART" property value always
> counts as the first occurrence.

"Valid values are 0 to 60" is the BYSECOND sentence, three declarations further down in the same paragraph.

So **`COUNT=100` — a weekly meeting for two years — is an invalid value today.** Two consequences:

- `parsePropertyFromText` hands back a `RecurrenceRule` that fails its own `Validity` for ordinary input.
- `genValid @Count` is the derived instance, so it is capped by the same wrong bound. **Nothing in the suite has ever exercised a count above 60.**

The fix drops the bound entirely, which makes the derived instance the honest one.

## `BySetPos` has the opposite problem

The instance declares only that the position is not zero, but §3.3.10 does give a range:

> Valid values are 1 to 366 or -366 to -1.

So `BYSETPOS=400` passes as valid. Now bounded.

## Why this goes first

Making the parser refuse values that fail their own `Validity` is the obvious follow-up, and it is a separate PR. It cannot come first: with `Count` as it is, that change would start rejecting `COUNT=100`.

## Two commits

1. **Red.** Both fail, and `Count`'s failure prints the borrowed sentence verbatim:
   ```
   Count.considers an ordinary count valid
     Violated: Valid values are 0 to 60.
   BySetPos.rejects a set position past the number of days in a year
   ```
2. **Green.** Nine lines.

## Generators

`GenValid BySetPos` builds from the QuickCheck size, so it stays well inside 366 and needs no change. `GenValid Count` becomes unbounded, which is the point — but it does not blow up the property tests that expand recurrence rules, because the expansion is bounded by the limit day however large the count is. Measured: `ical-recurrence-gen` runs the same 8813 examples in the same time, and `ical-gen` goes 1080 → 1082 passing with 46127 examples.

Both suites green, `nix flake check` passes.

## How this was found

Probing `BYSECOND=60`, which led to a survey of what the RRULE parser accepts. Two further findings are recorded in the handoff and get their own PRs: out-of-range `BY*` values parsing into invalid values across eight rule parts, and `BYSECOND=60` producing different recurrence sets depending on `DTSTART`'s value type.