[WIP] CVXPY solvers for Switching Models

This branch is an attempt to use cvxpy to solve the optimization problems underlying the switching models. 

As of right now, the results aren't very impressive. CVXPY looks to be 4-5 times slower than the previous implementation (which directly calls CVXOPT). The code is more unstable with cvxpy as well (more sensitive to numerical issues).

I'll continue hacking on this, since CVXPY is good for prototyping, but we won't be able to use this cvxpy to run larger experiments.