quasicomputational and ocharles Generate dhall/types with dhall-to-cabal-meta (#167)
* Use Dhall.Lint to simplify --print-type and --print-default.

Unconditionally adding a binding for each CSEd subexpression, whether
it was lifted out or not, means less branches and less possibilities
to get things wrong (see #157 for such an example). There's also no
need to keep track of precisely what we've lifted out with CSEState
any more.

In passing, I also spotted a bug in how the CSE code was handling
`let`: each binding applies to subsequent bindings, so we may need to
shift the variable for each one. This doesn't actually happen in
practice, but it's nice to get it right.

None of this ought to be user-visible and, if it is, it's a strict
improvement.

* Split liftCSE into a CSE phase and a variable substitution phase.

* Split the CSE machinery into its own module.

* meta: generate dhall/types/.

With any luck, this will make future transitions between Cabal and
Dhall versions a bit less annoying, since it's one less place that
will need manual attention.

* Add Mixin, Flag, Dependency, SetupBuildInfo and TestType to KnownType.

* Dhall 1.24 knock-on change.

* Use transformOf from Dhall.Optics instead of a local version.
Latest commit 77fe73b Jun 12, 2019