Remove `NoThunks` instances for predicate failures and `ContextError` types
`NoThunks` instances are used for memory leak detection during development,
but predicate failures should never be retained in the ledger state - they
are only used for validation results. Removing these instances reduces
code maintenance burden and instance derivation overhead.
This change removes `NoThunks` instances from:
- All predicate failure types across Shelley, Allegra, Alonzo, Babbage,
Conway, and Dijkstra eras
- All predicate failures in cardano-protocol-tpraos
- All `ContextError` types (`AlonzoContextError`, `BabbageContextError`,
`ConwayContextError`, `DijkstraContextError`)
- The `NoThunks (ContextError era)` constraint from the `EraPlutusContext` class
- The `NoThunks` deriving instance for `CollectError`