Added mkRecordWith, the abstract PrairieOptions type, and defaultPrairieOptions. mkRecord is now mkRecordWith defaultPrairieOptions and its generated code is unchanged. The PrairieOptions constructor is intentionally not exported, so adding options later is not a breaking change.
mkRecordWith defaultPrairieOptions { useTypeEquality = True } generates the SymbolToField instances with a ~ equality constraint binding the field type, instead of placing it directly in the instance head. This admits field types that an instance head rejects — most notably type-family applications (e.g. data Test m = Test { field :: Family m Int }). It is opt-in because the ~ constraint requires the TypeOperators extension at the use site; default mkRecord behaviour is unaffected. Using a type-family field without enabling useTypeEquality now produces a descriptive error.