Work around apparent bug in scipy.linalg.signm() in some cases computing the wrong result.
cppad.general is much faster than cppad.symmetric. Also computing only lower triangle subset speeds things up slightly.
Selfcons iteration doesn't need full solver reset, only drop the Jacobian decomposition.