Reimplement Prism generation and implement 'makeClassyPrisms'

TODO: Support Reviewer generation
Updated PrismTH for Review support for existentially quantified constructors
Add Choice constraint to Review for compatibility with Prism