Port `GenesisTest`s into new `TestSuite` data structure
The new `ConformanceTest` record contains fields for all data formerly used to run a test via `forAllGenesisTest` helper, plus other fields that pertain to its evaluation as a test property on a`TestTree`. A value of this type is defined for each point-schedule/genesis test. All such `ConformanceTest`s are arranged in a `TestSuite`s, a data structure introduced with the goal of eventually exporting them as part of a new sublibrary for the Conformance Testing of Consensus harness (see https://github.com/tweag/cardano-conformance-testing-of-consensus). This data structure is designed to optimize single test lookups, while retaining the necessary structure to be compiled back to a `TestTree`, so that the introduced changes preserve the semantics of the `ouroboros-consensus:test:consensus-diffusion-test` test suite. To accomplish this, a new data type is introduced in each module as a `key` for the locally defined `TestSuite`, such that each test in the module corresponds to a unique value (nullary constructor) of this type. This means that including a new test in a `TestSuite` requires the extension of such key type by introducing a new data constructor. These `key` types are aggregated into higher level key types to reify the nested grouping of the original tasty `TestTree`s. It is by means of `mkTestSuite` and `at` that a higher level `TestSuite` can be defined. The `SmallKey key` constraint is needed for their exhaustive construction, via `newTestSuite` and `mkTestSuite`; as implemented, a `TestSuite` is a total map. Co-authored-by: Sandy Maguire <[email protected]>