Simplifier now errors on infeasible programs.

Before, the simplifier would silently transform infeasible problems
anyway. This could actually change them from infeasible to feasible.
Now, instead, the simplifier returns (Either InfeasibleError Program).