An operational version of SMT integration for solving linear constraints.

This commit implements the missing "improvement" stage.

It also refactors the code in two ways:
  - Most of the work is now done in module TcTypeNats
  - It removes the intermediate `Expr` type: now we go from GHC's `Ct`
    directly to SmtLib2 s-expressions (represented by type `SExpr`).