Tagless final encoding of `ExpCmdI` in the parser
Before this change, we used a roundabout encoding:
- a GADT (
ExpCmdG
) - a class to pass it around (
ExpCmdI
) - helpers to match on it (
ecHsApp
,ecHsIf
,ecHsCase
, ...)
It is more straightforward to turn these helpers into class methods, removing the need for a GADT.