Add `genSnapShots` generator for mark, set and go `SnapShots` in `LedgerState`.
Implements `genSnapShots` in `Test.Cardano.Ledger.Conway.Gen.SnapShots`, which generates a plausible `SnapShots` value from a `LedgerState` for use in tests. The base snapshot is derived from the current instant stake via `snapShotFromInstantStake`. Mark, set, and go snapshots are then produced by altering the base snapshot which randomly samples zero or more of the following operations and applies them in sequence: - New stake registration: introduce a fresh credential delegated to an existing pool - Stake address deregistration: remove a credential from active stake - Stake address redelegation: redirect an already-delegated credential to a different pool - First delegation: delegate a registered-but-undelegated credential to a pool - Stake pool registration: add a new pool - Stake amount change: adjust the stake of an existing credential - Pool deregistration (set/go only): remove a pool and all its delegators Pool deregistration is excluded from the mark snapshot because the SNAP rule (which records the current stake distribution) runs before POOLREAP (which processes pool retirements that have reached their epoch) in the epoch transition, so retiring pools are still visible in mark.