Sometimes CVXOPT was coming back with "unknown" solutions that looked
pretty close to real solutions. Now, instead of failing immediately,
we check to see if the primal/dual objectives are within ABS_TOL of
each other, and whether or not the optimal solutions lie in the
cone. If they all do, we take that as our solution and succeed rather
than raising an exception.
This required the loosening of what it means to be in the cone. Before
this commit, a point needed to be "far" inside the cone (past the
tolerance). Now it can lie outside of the cone (but still within the
tolerance). This weakens the checks that we perform on e1 and e2, but
gives us an easy way to check the optimal strategies.