Make constraints parametric

We talked about this a long time ago I think. I'm pulling the robust stuff out and refactoring as I go, trying to reuse as much from JuMP as possible.
This change removes a lot of duplication for me, doesn't really increase JuMP complexity much if at all, and no speed penalty.